java线程
云之悠水之澈
这个作者很懒,什么都没留下…
展开
-
个人学习笔记:Synchronized与ReentrantLock的比较
1、相同点: 加锁方式同步,而且都是阻塞式的同步,两者都是可重入锁。 2、区别: (1)产生异常时:使用Synchronized锁定如果遇到异常,JVM会自动释放锁,所以使用Synchronized关键字时需要非常小心的处理异常,避免发生不一致的情况。而使用ReentrantLock中的lock方法锁定必须必须必须要手动释放(重要的事说三遍),所以通常在finally代码块中调用Reentrant...原创 2019-07-24 10:41:00 · 91 阅读 · 0 评论 -
个人学习笔记:CountDownLatch类和CyclicBarrier 类和Semaphore类的简单使用介绍
1、CountDownLatch的简单介绍: CountDownLatch是一种通用的同步工具,用给定的计数初始化。CountDownLatch是一次性现象 - 计数无法重置。由于await方法的调用,方法阻塞直到当前计数达到零,每次调用countDown(),都会让计数值减一,之后释放所有等待的线程并await立即返回任何后续的调用 。 示例代码: import java.util.con...原创 2019-07-24 21:21:13 · 97 阅读 · 0 评论 -
个人学习笔记:java多线程生产者消费者问题两种不同简单实现
使用wait和notifyAll方法或Lock和Condition分别实现生产者消费者问题。强烈建议,wait与await方法都应与while语句联合使用而不是if,唤醒等待的线程使用notifyAll方法而不是notify方法。原创 2019-07-25 11:09:10 · 92 阅读 · 0 评论 -
个人学习笔记:ThreadLocal类的使用说明
1、ThreadLocal类简介: ThreadLocal被称为线程局部变量。也是实现共享变量数据一致性的一种方式,与Synchronized相比较,使用ThreadLocal是以空间换时间。当使用ThreadLocal维护变量时,访问其中的每个线程(通过其 get或set方法)具有其自己的,独立初始化的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。实现副本的...原创 2019-07-25 15:57:14 · 141 阅读 · 0 评论 -
个人学习笔记:java多线程部分容器的API简介
一些常用的java并发容器的常用方法介绍原创 2019-07-26 10:33:36 · 71 阅读 · 0 评论 -
个人学习笔记:java线程面试中synchronized关键字的常见问题
1、synchronized关键字是对某个对象加锁,而非代码块。 private int count = 10; //加锁的方式1与方式2是等价的 //加锁方式1,在方法上加锁 public synchronized void method1() { //等同于在方法的代码执行时要synchronized(this) count--; System.out.println(Thread...原创 2019-07-22 21:10:44 · 114 阅读 · 0 评论 -
个人学习笔记:java不加锁的线程安全的懒加载的单例模式(内部类实现)及对volatile关键字的理解
1、单例模式 代码实现:(思路源于马士兵老师java多线程视频教程) public class Singleton { //实现单例模式必须编写一个私有构造函数,阻止使用new关键字创建对象 private Singleton() { System.out.println("single"); } //用来创建单例的私有静态内部类 private sta...原创 2019-07-23 11:44:00 · 222 阅读 · 0 评论 -
个人学习笔记:java常用线程池及相关的接口
Executor、ExecutorService、FutureTask接口及常用线程池介绍原创 2019-08-19 22:35:27 · 204 阅读 · 0 评论