Java
大约 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使用的内存,用于交换数据使用,例如缓存流的使用
锁🏧
乐观锁🍒
- 每次读取数据的判断版本字段是否修改,然后在重试!
悲观锁😃
- 在等待读取数据的时候进行数据锁定!