Java并发编程
「已注销」
2018.10.10努力加油,一切都会越来越好
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
CyclicBarrier比门栓更强大
package ThreadLearn; //应用场景,用于多线程计算数据 //还有一个更高级的构造函数CyclicBarrier(int parties,Runnable barrierAction)线程到达屏障,优先执行barrierAction函数 import java.util.concurrent.BrokenBarrierException; import java.util.con...原创 2018-11-28 21:08:44 · 157 阅读 · 0 评论 -
并发小知识
不要以字符串常量作为锁定对象 在下面的例子中,m1和m2其实锁定的是同一个对象这种情况还会发生比较诡异的现象,比如你用到了一个类库,在该类库中代码锁定了字符串“Hello”, 但是你读不到源码,所以你在自己的代码中也锁定了"Hello",这时候就有可能发生非常诡异的死锁阻塞,因为你的程序和你用到的类库不经意间使用了同一把锁 String s1 = "Hello"; String s2 = "H...原创 2018-11-28 20:23:39 · 150 阅读 · 0 评论 -
并发包原子类的简单使用
package ThreadLearn; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicIntegerArray; public class T015_1 { //jdk1.5开始提供原子类包 Atomic包里一共you 13个原子类 static A...原创 2018-11-28 20:00:25 · 267 阅读 · 0 评论 -
Java里的7中阻塞队列
1.ArrayBlockingQueue 数组结构的有界队列 2.LinkedBlockingQueue 链表结构的有界队列 3.PriorityBlockingQueue 支持优先级排序的无界队列 4.DelayQueue 用优先级队列实现的无界阻塞队列(指定多久才能从队列中获取元素,在缓存系统设计和定时器任务调度中) 5.SynchronousQueue 不储存元素的队列(传球手) 6.Lin...原创 2018-11-29 16:03:42 · 144 阅读 · 0 评论 -
并发知识大纲
总结: 1:对于map/set的选择使用 HashMap TreeMap LinkedHashMap Hashtable Collections.sychronizedXXX ConcurrentHashMap ConcurrentSkipListMap 2:队列 ArrayList LinkedList Collections.synchronizedXXX CopyOnWriteList Qu...原创 2018-11-29 10:32:36 · 156 阅读 · 0 评论 -
ConcurrentQueue
package ThreadLearn; /** * 有N张火车票,每张票都有一个编号 * 同时有10个窗口对外售票 * 请写一个模拟程序 * * 分析下面的程序可能会产生哪些问题? * 重复销售?超量销售? * * 使用Vector或者Collections.synchronizedXXX * 分析一下,这样能解决问题吗? * * 就算操作A和B都是同步的,但A和B组...原创 2018-11-29 10:29:57 · 966 阅读 · 0 评论 -
Singleton
/** * 线程安全的单例模式: * * 阅读文章:http://www.cnblogs.com/xudong-bupt/p/3433643.html * * 更好的是采用下面的方式,既不用加锁,也能实现懒加载 * */ package yxxy.c_023; import java.util.Arrays; public class Singleton { priv...原创 2018-11-29 10:19:19 · 129 阅读 · 0 评论 -
ThreadLocal
package ThreadLearn; /** * ThreadLocal线程局部变量 * * ThreadLocal是使用空间换时间,synchronized是使用时间换空间 * 比如在hibernate中session就存在与ThreadLocal中,避免synchronized的使用 * * 运行下面的程序,理解ThreadLocal */ import java.util....原创 2018-11-29 10:13:29 · 177 阅读 · 0 评论 -
Lock和condition实现生产者,消费者模型
package ThreadLearn; /** * 面试题:写一个固定容量同步容器,拥有put和get方法,以及getCount方法, * 能够支持2个生产者线程以及10个消费者线程的阻塞调用 * * 使用wait和notify/notifyAll来实现 * * 使用Lock和Condition来实现 * 对比两种方式,Condition的方式可以更加精确的指定哪些线程被唤醒 ...原创 2018-11-29 10:04:40 · 899 阅读 · 2 评论 -
ReentrantLock
package ThreadLearn; /** * reentrantlock用于替代synchronized * 由于m1锁定this,只有m1执行完毕的时候,m2才能执行 * 这里是复习synchronized最原始的语义 * * 使用reentrantlock可以完成同样的功能 * 需要注意的是,必须要必须要必须要手动释放锁(重要的事情说三遍) * 使用syn锁定的话如果遇...原创 2018-11-29 09:53:08 · 120 阅读 · 0 评论 -
Java并发包的门栓
package ThreadLearn; /** * 曾经的面试题:(淘宝?) * 实现一个容器,提供两个方法,add,size * 写两个线程,线程1添加10个元素到容器中,线程2实现监控元素的个数,当个数到5个时,线程2给出提示并结束 * * 给lists添加volatile之后,t2能够接到通知,但是,t2线程的死循环很浪费cpu,如果不用死循环,该怎么做呢? * * 这里...原创 2018-11-28 20:43:39 · 1063 阅读 · 0 评论
分享