随笔分类 -  多线程

摘要:JDK默认提供了四种线程池:SingleThreadExecutor、FiexdThreadPool、CachedThreadPool、ScheduledThreadPoolExecutor。 本文会先从前三个线程池的使用开始讲解,然后过度到线程池参数、拒绝策略等方面进行全面讲解,最后自己根据参数构 阅读全文
posted @ 2019-05-29 12:16 Cyrus丶 阅读(391) 评论(0) 推荐(0)
摘要:CountDownLatch、CyclieBarrier与SamePhore都可用来控制线程的执行,那么他们之间有什么区别呢 CountDownLatch CountDowenlatch可以看成一个线程等待多个线程,当多个线程执行完毕后最后线程才会执行 话不多说。直接上代码 可以看到,刚开始给要等待 阅读全文
posted @ 2019-05-27 10:09 Cyrus丶 阅读(799) 评论(0) 推荐(0)
摘要:Atomic是基于unsafe类和自旋操作实现的,下面以AtomicInteger类为例进行讲解。 要理解Atomic得先了解CAS CAS CAS全程Compare And Swap ,是条并发原语,功能是判断内存中某个值是否与预期值相等,相等就用新值更新旧值,否则不更新。 Java中CAS是基于 阅读全文
posted @ 2019-05-25 11:52 Cyrus丶 阅读(2947) 评论(0) 推荐(0)
摘要:volatile是一种轻量级的同步机制。它可以保证内存可见性以及防止指令重排序,但是不保证原子性 volatile和JMM机制是不可分割的,在谈volatile的时候有必要先了解以下JMM JMM(Java内存模型) JMM是一种抽象的概念模型,实际上并不存在。JMM主要可以将内存看成两块,一块是主 阅读全文
posted @ 2019-05-24 13:24 Cyrus丶 阅读(518) 评论(0) 推荐(0)
摘要:中断 一个线程在执行完毕之后会自动结束,如果在运行过程中发生异常也会提前结束 一个线程可能处于以下四种状态之一: 新建 就绪 阻塞 死亡 一个任务进入阻塞状态可能有以下原因: 一些阻塞可以中断,但是一些阻塞不可中断。 InterruptedException: 通过调用一个线程的 interrupt 阅读全文
posted @ 2019-03-14 18:14 Cyrus丶 阅读(634) 评论(0) 推荐(0)
摘要:Thread.yield(): 对静态方法 Thread.yield() 的调用声明了当前线程已经完成了生命周期中最重要的部分,可以切换给其它线程来执行。该方法只是对线程调度器的一个建议,而且也只是建议具有相同优先级的其它线程可以运行。 Executor: SingleThreadExecutor: 阅读全文
posted @ 2019-03-14 17:13 Cyrus丶 阅读(300) 评论(0) 推荐(0)
摘要:当我们使用线程的话有三种办法: 实现 Runnable 接口; 实现 Callable 接口; 继承 Thread 类 实现 Runnable 和 Callable 接口的类只能当做一个可以在线程中运行的任务,不是真正意义上的线程,因此最后还需要通过 Thread 来调用。可以说任务是通过线程驱动从 阅读全文
posted @ 2019-03-14 16:15 Cyrus丶 阅读(301) 评论(0) 推荐(0)