多线程
文章平均质量分 90
讲不出 再见
这个作者很懒,什么都没留下…
展开
-
ThreadLocal 类的解读与用法(一篇就明白)
ThreadLocal 是与线程关联的局部变量,凡是利用 ThreadLocal 存储和获取的数据都只与当前线程有关,与其它线程无关。看看原理图:原创 2021-06-11 17:41:10 · 311 阅读 · 0 评论 -
Future,FutureTask,线程池ThreadPoolExecutor
1、Future接口Future 是配合用Callable实现的线程的,Callable实现的线程可以有返回值,必须等到线程执行完了才会返回值,难道我们要一直等它执行完,岂不是阻塞浪费。因此才用Future来异步获取线程的返回值,不用等待。public interface Future<V> { /** * Attempts to cancel execution of this task. This attempt will * fail if the原创 2020-07-01 00:20:24 · 860 阅读 · 0 评论 -
并发限流——Semaphore类
目录1 初识Semaphore1.1 动态增加许可证数量1.2 公平和非公平方式获取许可证2 常用方法2.1acquireUninterruptibly() 和acquireUninterruptibly(int permits) 方法2.2drainPermits() 和 availablePermits() 方法2.3getQueueLength() 和hasQueuedThreads() 方法2.4 尝试获取许可证1 初识SemaphoreSem...原创 2020-05-17 22:51:55 · 370 阅读 · 1 评论 -
CountDownLatch类 和 CyclicBarrier类 详解与区别
1. CountDownLatch 类CountDownLatch 类是用于线程同步的工具,作用:让一个或多个源线程(调用await方法的线程) 必须 等待一个或多个目标线程(调用countDown方法的线程)都执行完成了才能继续执行自己的代码。注意:1. 不会妨碍目标线程的执行,但是会阻塞源线程,因为await方法会检测count是为0,如果不是0,就会阻塞,不会继续执行后面的代码。...原创 2020-03-04 12:25:33 · 382 阅读 · 0 评论 -
java volatile关键字
volatile关键字属于多线程中的内容,用于修饰变量,被volatile修饰的变量在多线程环境下具有可见性,即保证变量的可见性,另外,还能禁止指令重排,但是无法保证线程安全。可见性:volatile修饰的变量对所有的线程都是可见的,一旦变量值修改了,所有线程都能看见。指令重排:java代码中,程序是一句一句的,有顺序,运行后会有个结果,但是经过编译之后,可能因为对java代码作了优化,程...原创 2020-02-09 16:41:07 · 169 阅读 · 0 评论 -
多线程——同步机制synchronized、lock
1、方法内的局部变量是线程安全的假设方法中有一个局部变量,多个线程同时访问这个方法,同时使用这个局部变量,仍然是线程安全的。为什么是这样呢?jvm在运行时,内存中分区:程序计数器、本地方法栈、虚拟机栈、堆、方法区。虚拟机栈:线程私有的,生命周期和线程一样,线程里的方法就对应于栈中的一个栈帧。出栈入栈的动态过程就和一般程序的一样(如果不了解栈帧,可能无法理解)。需要知道虚拟机栈的...原创 2019-04-01 22:50:35 · 1081 阅读 · 0 评论 -
多线程——线程优先级
目录1、线程优先级具有继承性2、线程优先级的作用Thread类源码中定义:最低优先级为1public final static int MIN_PRIORITY = 1;一般没有继承,没有显示指定优先级时,默认优先级为5public final static int NORM_PRIORITY = 5;最高优先级为10public final static int ...原创 2019-03-31 22:02:03 · 1401 阅读 · 0 评论 -
多线程——Thread类
Thread类线程状态代表一个线程在生命周期中所处的状态或者阶段。publicclass Thread implements Runnable { public enum State { 用new创建了之后,但是还未start运行 NEW, 正在执行状态 RUNNABLE, 阻塞状态 ...原创 2019-03-31 20:50:56 · 279 阅读 · 0 评论 -
多线程——线程基础
目录1、继承Thread类2. 实现Runnable接口3. currentThread() 方法4. isAlive() 方法5. sleep() 方法6. getId() 方法7. 停止线程8. interrupt() 停止一个线程——抛出异常法9. interrupt() 停止一个线程——阻塞中停止10. interrupt() 停止一个线程——...原创 2019-10-07 16:36:08 · 117 阅读 · 0 评论 -
多线程——线程组
ThreadGroup 线程组:就是一组线程或者线程组,可以包含线程,也可以包含线程组,相信这个很好理解。如下图:我可将这种关系,理解为父线程组,子线程组,线程。就像一棵树,本文会将末端的线程组成为“叶子节点”1、线程对象关联: 1.1、1级关联就是线程组中全部是线程,没有线程组,这样往下就没有可延伸的了,所以叫1级关联。 2.2、多级关联就是线程组中...原创 2019-03-30 22:21:43 · 508 阅读 · 0 评论