Java并发
文章平均质量分 52
Java并发
不见长安见晨雾
皇上有旨,让太阳站下
展开
-
Java多线程文件下载+断点续传
例如:一个10字节的文件,一共开了3个线程,每个线程下载数:size = 10/30:0-21:3-52:6-9开始位置:id * size结束位置:(id + 1) * size - 1最后一个线程的结束位置:length - 1。原创 2022-10-11 14:55:12 · 601 阅读 · 0 评论 -
Java中的6种线程状态
Thread 初始态(NEW) 创建一个Thread对象,但还未调用start()启动线程时,线程处于初始态。 运行态(RUNNABLE) 在Java中,运行态包括就绪态和运行态。 就绪态 该状态下的线程已经获得执行所需的所有资源,只要CPU分配执行权就能运行。所有就绪态的线程存放在就绪队列中。 运行态 获得CPU执行权,正在执行的线程。由于一个CPU同一时刻只能执行一条线程,因此每个CPU每个时刻只有一条运行态的线程。 阻塞态(BLOCKED) 当一条正在执行的线程请求某一资源失败时,就会进入阻塞态。原创 2022-03-23 11:39:11 · 1141 阅读 · 1 评论 -
volatile关键字+CAS+ABA
volatile volatile是Java虚拟机提供的轻量级的同步机制,当多个线程进行操作共享数据时,可以保证内存中的数据可见。 JMM有3个特性 1:可见性 2:原子性 3:有序性(禁止指令重排) 其中volatile满足可见性和有序性,但是不满足原子性 注意: 1:volatile 不具备“互斥性”(synchronized有互斥性) 2:volatile 不能保证变量的“原子性”(多线程访问自增变量,多线程各自读取到以后再写入,可能会重复写,volatile只能保证在主存中操作,但是不能保证原子性)原创 2022-02-21 13:07:32 · 231 阅读 · 0 评论