摘要: 1. volatile 以上代码尝试实现单例模式,但存在严重的线程安全风险。Java Memory Model定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(main memory)中,每个线程都有一个私有的本地内存(local memory),本地内存中存储了该线程以读/写共享变 阅读全文
posted @ 2018-09-11 17:31 小兵1985 阅读(685) 评论(0) 推荐(0) 编辑
摘要: java.util.concurrent.ExecutorService接口提供了许多线程管理的方法 有了以上方法,便可以基于此接口实现线程池的各种功能(例如java.util.concurrent.ThreadPoolExecutor/java.util.concurrent.ScheduledT 阅读全文
posted @ 2018-09-11 16:53 小兵1985 阅读(1616) 评论(0) 推荐(0) 编辑
摘要: Map的一些实现类有及其特性 类 Hashtable HashMap Collections.synchronizedMap ConcurrentHashMap 以下代码测试各类的读写效率: 输出结果如下: 阅读全文
posted @ 2018-09-11 15:41 小兵1985 阅读(1414) 评论(0) 推荐(0) 编辑
摘要: 一些列表类及其特性 1. 线程安全的列表类并不意味着调用它的代码就一定线程安全 2. 只有CopyOnWriteArrayList能支持在遍历时修改列表元素 以下代码模拟多线程环境下,各个类Iterator机制的表现 阅读全文
posted @ 2018-09-11 15:16 小兵1985 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 假设有线程1/线程2/线程3,线程3必须在线程1/线程2执行完成之后开始执行,有两种方式可实现 Thread类的join方法:使宿主线程阻塞指定时间或者直到寄生线程执行完毕 CountDownLatch类:指定计数器,当计数器清零即取消阻塞 阅读全文
posted @ 2018-09-11 14:25 小兵1985 阅读(1139) 评论(0) 推荐(0) 编辑
摘要: 前言: 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。 阅读全文
posted @ 2018-09-11 13:59 小兵1985 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 两种实现线程同步的方法 阅读全文
posted @ 2018-09-11 10:15 小兵1985 阅读(229) 评论(0) 推荐(0) 编辑