
多线程与并发
文章平均质量分 96
多线程与并发
linkingfei
coder;
展开
-
CountDownLatch
public class Test2 { public static void main(String[] args) throws InterruptedException { long start=System.currentTimeMillis(); final CountDownLatch countDownLatch= new Co...原创 2018-08-28 14:53:10 · 121 阅读 · 0 评论 -
java并发包&锁的深度化
Java锁机制: 悲观锁:效率低(for update) 乐观锁:版本标识 重入锁:reentrantLock\synchronized 非重入锁递归调用造成死锁 读写锁:通常用作缓存保证读写数据的一致性 CAS锁:相同时更新原变量,不同时说明已经修改不再更新 自旋锁:CAS循环 排他锁 ...原创 2021-01-30 00:39:25 · 92 阅读 · 0 评论 -
四种基本线程池
##线程池的四种使用方式 1.newSingleThreadExecutor 2.newScheduledThreadPool **scheduleAtFixedRate如果间隔时间大于任务的执行时间,任务不受执行时间的影响。如果间隔时间小于任务的执行时间,那么任务执行结束之后,会立马执行,至此间隔时间就会被打乱。 public static void method_02() { Sche...原创 2020-01-24 20:15:57 · 144 阅读 · 0 评论 -
线程锁
1.synchronized 它可以锁住一个方法或者一段代码块,伪代码如下: //锁住方法 public synchronized void test(){ doSomething... } //锁住代码块 Object lock=new Object(); public synchronized void test(){...转载 2018-03-08 21:58:12 · 389 阅读 · 0 评论 -
volatile
1.volatile关键字的两层语义,被volatile修饰之后,那么就具备了两层语义: 保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。 禁止进行指令重排序。 2.volatile保证原子性吗? 可见性只能保证每次读取的是最新的值,但是volatile没办法保证对变量的操作的原子性。 3.volatile能保证有序...转载 2018-03-08 20:19:36 · 169 阅读 · 0 评论 -
多线程
假如有Thread1、Thread2、ThreaD3、Thread4四条线程分别统计C、D、E、F四个盘的大小,所有线程都统计完毕交给Thread5线程去做汇总,应当如何实现? 一般情况,我们实现多线程都是Thread或者Runnable(后者比较多),但是,这两种都是没返回值的, 所以我们需要使用callable(有返回值的多线程)和future(获得线程的返回值)来实现了...转载 2018-03-08 19:48:11 · 148 阅读 · 0 评论 -
线程池
1、为什么用线程池 第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。 2、线程池原理 我们可以把并发执行的任务传递给一个线程池,来替代为每个并发...原创 2018-03-08 00:00:55 · 131 阅读 · 0 评论