多线程
文章平均质量分 87
private_pig
这个作者很懒,什么都没留下…
展开
-
可重入锁与不可重入锁
本文转载自:https://www.cnblogs.com/dj3839/p/6580765.html不可重入锁先设计一种锁public class Lock{ private boolean isLocked = false; public synchronized void lock() throws InterruptedException{ w...原创 2019-06-03 11:29:58 · 3868 阅读 · 0 评论 -
线程(2)——关键字volatile,synchronized
//线程1int i = 0;i= i+1;//线程2i= i+1;System.out.println(i);如上面带码想要使打印的i值为2;然而事实并不一定是2,得到的结果可能是1。 造成这样的结果是和内存模型有关。 第一种情况当执行线程1时,会从主存中先读取i的值,然后复制一份到高速缓存中,然后CPU执行指令对i进行加1操作然后将数据写入到高速缓冲中,最后把高速缓存中i的值...原创 2018-09-15 15:04:34 · 194 阅读 · 0 评论 -
线程(4)——线程池
目录1.1JDK对线程池的支持1.2核心线程池的内部实现ThreadPoolExecutor的核心调度代码1.3拒绝策略1.1JDK对线程池的支持为了更好的能够控制多线程,JDK提供了一套Executor框架,其本质是一个线程池。 ...原创 2018-09-26 17:53:43 · 223 阅读 · 0 评论 -
线程(3)——死锁
死锁的产生- 互斥条件:当资源被占用的时候,其他线程不能使用。- 请求与保持:一个线程去请求资源,被阻塞时他所占有的资源是不会被释放的。- 不可剥夺:线程以获取到一个资源在没有使用的情况下。不能被强行剥夺。- 循环等待:t1线程占用o1要用o1,o2资源;t2资源占有o2要用o1,o2;下面是死锁产生(循环等待)的一个例子:public class DeadLock...原创 2018-09-19 17:43:58 · 194 阅读 · 0 评论 -
多线程(1)——多线程基础
并发和并行并发偏重于多个任务交替执行。并行的多个任务才是真正意义上的同时执行。临界区临界区用来表示一种公共资源或者共享数据,可以被多个线程使用,但是每一次,只能有一个线程使用它,一旦临界区被占用其他资源想要占用这个 资源,就必须等待。死锁(Deadlock)、活锁(Starvation)、饥饿(Livelock) 死锁的问题就像这四辆小汽车,彼此之间相互占用了其他车辆的...原创 2018-09-15 10:19:50 · 242 阅读 · 0 评论