并发编程
却顾所来径
当你老了,回顾一生,就会发觉:什么时候出国读书、什么时候决定做第一份职业、何时选定了对象而恋爱、什么时候结婚,其实都是命运的巨变。只是当时站在三岔路口,眼见风云千樯,你作出抉择的那一日,在日记上,相当的沉闷和平凡,当时还以为是生命中普通的一天。
展开
-
start()和run()的区别
本方法通过实现runnable接口来实现多线程,刚开始被run()和start()搞糊涂了,后来看了很多博客,稍有感悟。所以写一下自己的理解。start()方法让一个线程进入就绪队列等待分配cpu,分到cpu后才调用实现的run()方法。若不使用start()直接在main方法中直接使用run()方法,比如下面程序的前两种情况,因为没有开辟新的线程,所以当前线程是main线程,而第三种情况,...原创 2018-09-22 22:16:00 · 15730 阅读 · 1 评论 -
单例模式双重校验锁使用synchronized,为什么同时使用volatile?
或者许多的朋友在使用单例模式中会学到双重检查加锁(double-checked locking)的应用。public class Singleton { private volatile static Singleton uniqueInstance; private Singleton(){} public static Singleton getInstan...转载 2019-04-12 23:01:46 · 3069 阅读 · 2 评论 -
java生产者消费者模板
总体思路:两个类:ProConsumer用于制造两个线程做测试;ShareData有共享变量和两个方法,分别是生产方法increment(),消费decrement()同步:使用lock+condition生产和消费方法模板步骤:1.加锁2.判断3.等待4.干活5.通知唤醒6.释放锁package com.concurrent;import java...翻译 2019-06-15 21:42:56 · 174 阅读 · 0 评论 -
Callable线程如何一步步执行的
目录1. 背景2. 案例:2.1 使用Callable线程步骤:3. 代码设计分析4. 深入Callable具体源码,一步步查看如何执行:4.1 Callbale接口---FutureTask构造方法的接口4.2 FutureTask类和内部重要方法4.3 RunnableFuture接口---继承了Runnable,Future接口4.4 Runnabl...原创 2019-06-16 22:42:13 · 2068 阅读 · 2 评论