自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 收藏
  • 关注

原创 ThreadLocal认识

简介 ThreadLocal为每个线程创建一个新的副本,个线程间不会相互影响。 用空间换时间。而synchronized用时间换空间 public class ThreadLocalDemo { final static ThreadLocal<Person> tl = new ThreadLocal<Person>(); public static void main...

2019-12-05 14:35:19 93

原创 模拟阻塞线程池

需求: 一个容器中最多5份数据,容器有取和存两个方法,当容器满后,存的线程需要等待,当容器空时,取的线程需要等待。 实现1 public class Container { private LinkedList<Object> list = new LinkedList<Object>(); private Object obj = new Object(); pri...

2019-12-05 14:30:32 224

原创 ReentrantLock使用

ReentrantLock简单使用 ReentrantLock为手动锁,必须手动释放锁。 创建:Lock lock = new ReentrantLock(); 加锁: lock.lock();(等同与synchronized(this)) 手动释放锁: unlock(); 窥探是否存在锁: boolean tryLock();直接查询是否存在锁 boolean tryLock(long tim...

2019-12-05 14:18:48 165

原创 CountDownLatch认识和使用

CountDownLatch介绍 CountDownLatch是一个同步工具类,用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用)。 CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。当每一个线程完成自己任务后,计数器的值就会减一。当计数器的值为0时,表示所有的线程都已经完成一些任务...

2019-12-05 14:06:59 210

原创 synchronized认识和使用

synchronized简介 百度百科: synchronized 关键字,代表这个方法加锁,相当于不管哪一个线程(例如线程A),运行到这个方法时,都要检查有没有其它线程B(或者C、 D等)正在用这个方法(或者该类的其他同步方法),有的话要等正在使用synchronized方法的线程B(或者C 、D)运行完这个方法后再运行此线程A,没有的话,锁定调用者,然后直接运行。它包括两种用法:synchro...

2019-12-05 11:39:26 94

原创 Volatile认识与应用

Volatile Java语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其他线程。当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序。volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile类型的变量时总会返回最新写入的值。 volatile详情...

2019-12-05 10:33:36 78

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除