欢迎您光临本小站。希望您在这里可以找到自己想要的信息。。。

张孝祥老师-java并发编程听课笔记(五)

java water 2927℃ 0评论

第十四讲

 

Semaphore实现信号灯

Semaphore可以维护当前访问自身的线程个数,并提供了同步机制。使用Semaphore可以同时访问资源的线程个数,例如,实现一个文件允许的并发访问数

 

东西很容易学会,重要的是遇到问题想起用这个东西解决

 

final Semaphore op = new Semaphore();

op.acquire();

op.availablePermits();

 

多个互斥,厕所有5个坑。。来了10个人。

单个信号量的Semaphore对象可以实现互斥锁的功能,并且可以是由一个线程获得了锁,再由另一个线程释放锁,这可应用于死锁恢复的一些场合

 

 

第十五讲

 

其他同步工具类

CyclicBarrier

表示大家彼此等待,大家结合好后才开始出发,分散活动后又在指定地点集合碰面。这就好比整个公司人员利用周末时间集合郊游一样,先各自从家出发到公园集合后,再同时出发到公园游玩,在指定地点集合后同时开始就餐

 

第十六讲

 

CountDownLatch

犹如倒计时计数器,调用CountDownLatch对象的countDown方法就将计数器减1,当计数器到达0时,则所有等待者或单个等待者开始执行。

 

模拟百米赛跑, 运动员等待裁判吹口哨,接到命令后运动员跑,所有运动员都跑完了,裁判员开始报成绩

一个人线程通知多个线程,或者多个线程通知一个线程

 

第十七讲

Exchanger

 

用于实现两个人之间的数据交换,每个人在完成一定的事务后想与对方交换数据,第一个先拿出数据的人将一直等待第二个人拿到数据到来时,才能彼此交换数据

 

第十八讲

 

可阻塞的队列

队列包含固定长度的队列和不固定长度的队列

什么是可阻塞队列,阻塞队列的作用与实际应用,阻塞队列的实现原理

ArrayBlockingQueue(jdk中已经提供)

注意三个添加方法的区别》查API文档

阻塞队列,实现同步通知的功能,单元格只有一个(用两个队列)

匿名构造方法,如下没有方法名字(任一构造方法调用之前执行)

 

 

 

19

 

java5 中的同步集合

传统的集合在多个线程访问时会有问题(HashSetHashMapArrayList

写程序得有线程安全的概念

以前没用同步集合的实现时》实现方式

Collections.synchronizedMap(Map<K, V> n)相当于一种代理方式

HashSetHashMap的区别和联系, HashSet的内部实现就是用的HashMapkey

 

java5以前的集合类还有另外一个隐患:

操作集合(改数据的地方)会修改版本号

在迭代集合时,不能同时对集合修改(ArrayList

 

解决这个问题

Collect users = new CopyonWriteArrayList();

转载请注明:学时网 » 张孝祥老师-java并发编程听课笔记(五)

喜欢 (1)or分享 (0)

您必须 登录 才能发表评论!