![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
Chris-Green
这个作者很懒,什么都没留下…
展开
-
Collections.synchronizedList & CopyOnWriteArrayList
ArrayList是非线性安全,即在一方在便利列表,而另一方在修改列表时,会报ConcurrentModificationException错误。而这不是唯一的并发时容易发生的错误,在多线程进行插入操作时,由于没有进行同步操作,容易丢失数据。Vector是一个线程安全的列表,采用数组实现。其线程安全的实现方式是对所有操作都加上了synchronized关键字,这种方式严重影响效率,因此,不转载 2017-12-01 09:46:58 · 253 阅读 · 0 评论 -
Java线程池ExecutorService和CountDownLatch的小例子
import java.util.concurrent.CountDownLatch;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** * 模拟了100米赛跑,10名选手已经准备就绪,只等裁判一声令下。当所有人都到达终点时,比赛结束。 * @author liuc...转载 2018-11-28 09:58:55 · 1152 阅读 · 0 评论 -
Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
https://www.cnblogs.com/dolphin0520/p/3920397.html转载 2018-11-30 16:29:33 · 178 阅读 · 0 评论 -
Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
https://www.cnblogs.com/dolphin0520/p/3920385.html转载 2018-11-30 16:28:45 · 89 阅读 · 0 评论 -
Java并发编程:Callable、Future和FutureTask
在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。 而自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任...转载 2018-11-30 16:26:24 · 122 阅读 · 0 评论 -
多线程之volatile、ThreadLocal、synchronized关键字区别
转载自:https://blog.csdn.net/paincupid/article/details/473464231.volatilevolatile主要是用来在多线程中同步变量。 在一般情况下,为了提升性能,每个线程在运行时都会将主内存中的变量保存一份在自己的内存中作为变量副本,但是这样就很容易出现多个线程中保存的副本变量不一致,或与主内存的中的变量值不一致的情况。而当...转载 2018-11-06 17:23:43 · 414 阅读 · 0 评论 -
volatile与synchronized的区别
转载自:https://www.cnblogs.com/tf-Y/p/5266710.html1、锁提供了两种主要特性:互斥(mutual exclusion) 和可见性(visibility)。 互斥即一次只允许一个线程持有某个特定的锁,因此可使用该特性实现对共享数据的协调访问协议,这样,一次就只有一个线程能够使用该共享数据。 可见性要更加复杂一些,它必须确保释放锁之...转载 2018-11-06 17:14:58 · 441 阅读 · 0 评论 -
sleep和wait的区别
① 这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。② 锁: 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。slee转载 2017-12-29 17:41:55 · 170 阅读 · 0 评论 -
Collections.synchronizedList & CopyOnWriteArrayList
ArrayList是非线性安全,即在一方在便利列表,而另一方在修改列表时,会报ConcurrentModificationException错误。而这不是唯一的并发时容易发生的错误,在多线程进行插入操作时,由于没有进行同步操作,容易丢失数据。 Vector是一个线程安全的列表,采用数组实现。其线程安全的实现方式是对所有操作都加上了synchronized关键字,这种转载 2018-01-12 15:12:14 · 621 阅读 · 0 评论