java_concurrent
cook_1996
这个作者很懒,什么都没留下…
展开
-
java并发编程总结一(待补充)
synchronized关键字对某个对象进行加锁自己新建一个对象作为锁住的对象public class T{ private int count = 10; private Object o =new Object(); public void m(){ synchronized(o){ count--; System.out.println(Thtread.cur...原创 2019-06-05 22:00:24 · 147 阅读 · 0 评论 -
java并发编程面试题1
实现一个容器,提供两个方法add和size写两个线程,线程1添加十个元素到容器中,线程2实现监控元素的个数,当个数达到五个时线程2 给出提示并结束方法一:volatile关键字public class MyContainer1 { volatile List list = new ArrayList(); public void add(Object o) { list.ad...原创 2019-06-05 22:16:55 · 156 阅读 · 0 评论 -
java并发编程总结二ReentrantLock
1. 使用ReentrantLock来替代synchronized需要注意的是,使用reentrantLock必须手工释放锁使用synchronized锁如果出现异常的话,jvm会自动释放锁,但是lock必须手工释放,可以在finally代码块中释放public class ReentrantLock2 { Lock lock = new ReentrantLock(); voi...原创 2019-06-08 11:44:52 · 90 阅读 · 0 评论 -
java并发编程面试题2.生产者消费者模式
面试题:生产者消费者模式写一个固定容量的同步容器,拥有put和get方法,以及getCount方法能够支持两个生产者线程以及十个消费者线程的阻塞调用方法一:使用wait和notify来调用public class MyContainer2<T> { final private LinkedList<T> lists = new LinkedList<...原创 2019-06-08 11:58:11 · 292 阅读 · 0 评论 -
java并发编程总结三ThreadLocal(待补充)
ThreadLocal一般称为线程本地变量,它是一种特殊的线程绑定机制,将变量与线程绑定在一起,为每一个线程维护一个独立的变量副本。通过ThreadLocal可以将对象的可见范围限制在同一个线程内。举个栗子:一个线程中更改了名字,另外一个线程立即能够看到public class ThreadLocal1 { volatile static Person p = new Person();...原创 2019-06-09 10:12:31 · 103 阅读 · 0 评论 -
多线程下的单例设计模式
方法一:public class Singleton1 { /* */ private static Singleton1 singleton = new Singleton1();//直接初始化一个实例对象 private Singleton1() {//私有构造函数,保证其他对象不能够直接new出该对象的一个实例 } public static Singleton...原创 2019-06-09 10:18:31 · 129 阅读 · 0 评论 -
volatile关键字的功能和底层实现原理
文章目录功能1:变量内存间的可见性1. 概述2. 底层原理功能2: 禁止指令重排序1.概念2. 指令重排序可能会带来的问题3. 禁止指令重排的原理事例待续。。。功能1:变量内存间的可见性1. 概述如果一个变量被volatile关键字修饰,那么所有线程都是可见的。所谓可见就是,当一条线程修改了这个变量值,新值对于其他线程来时是立即可见的; 而普通变量不能做到这一点。对于普通的变量: 普通变...原创 2019-06-20 10:38:35 · 4404 阅读 · 2 评论