跳至主要內容

Java

LiCheng大约 2 分钟

Java

介绍🐸

  • 2022/7/18

Java基础🍊

List工具🍅

  • 一些常用的工具方法

  • Collections.shuffle(list); 可以打乱list顺序

  • Collections.sort(list); 枚举也能排序,根据枚举定义的顺序排序

泛型💔

  • 泛型的场景
// ArrayList
// HashMap
// LikedList
// Array
// 远程调用泛型

定时任务👊

  • 0毫秒后执行第一次,后每500毫秒执行一次
public class Main {
    public static void main(String[] args)  {
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println("0");
            }
        }, 0, 500);
    }
}

多线程🍎

  • 使用多线执行业务并返回结果
  • 使用 FutureTask 执行任务,进行泛型返回。用于执行多段操作并需要获取结果的操作
package com.demo;

import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;

import java.util.concurrent.*;

/**
 * @author lc
 * @since 7/18/22
 */
public class ThreadTest {

    public static ThreadPoolExecutor executor  =
            new ThreadPoolExecutor(10, 100, 15, TimeUnit.SECONDS,new LinkedBlockingQueue<>(100));
    //核心线程数,最大线程数,超时时间,时间类型,队列,线程工厂,拒绝策略

    public static void main(String[] args) throws ExecutionException, InterruptedException {
        DateTime start = DateUtil.date();
        FutureTask<String> future1 = new FutureTask<>(() -> {
            sleep(1000);
            return "Hello";
        });
        FutureTask<String> future2 = new FutureTask<>(() -> {
            sleep(1000);
            return "Hello";
        });
        executor.execute(future1);
        executor.execute(future2);
        System.out.println(future1.get());
        System.out.println(future2.get());
        DateTime end = DateUtil.date();
        System.out.println(end.getTime()-start.getTime());
    }

    public static void sleep(int time) throws InterruptedException {
        Thread.sleep(time);
    }
}

Jvm😎

  • 内存模型

线程私有的⛪

  • 程序计数器 负责执行对应的每一行代码
  • 虚拟机栈 每次调用方法都会有个压栈的过程,并方法执行后进行弹出栈
  • 本地方法栈 提高Jvm虚拟机使用的方法

线程公有的💢

  • 堆 存放对象实例,数组的数据,
  • 方法区 会存储类的信息,类信息,字段信息,方法信息,常量,静态变量,即时编译的代码缓存
  • 运行时常量池
  • 直接内存 由NIO使用的内存,用于交换数据使用,例如缓存流的使用

锁🏧

乐观锁🍒

  • 每次读取数据的判断版本字段是否修改,然后在重试!

悲观锁😃

  • 在等待读取数据的时候进行数据锁定!