Java并发编程读书笔记(二)之原子操作
来源:互联网 发布:君子知怕中心论点 编辑:程序博客网 时间:2024/05/22 12:53
并发编程中,需要将一个可能发生线程安全问题的操作变为一个原子操作。方法很多,比如CAS、synchronized、lock。值得一提的是,Java在java.util.concurrent.atomic
下提供了基本类型的包装类型,支持对他们的原子操作。
这里说明一点,多个线程安全的原子操作放到一起并不一定是线程安全的。
比如
class PutValue implements Runnable {boolean wait;ConcurrentHashMap<Integer, String> cm;public PutValue(boolean wait, ConcurrentHashMap<Integer, String> cm) {// TODO Auto-generated constructor stubthis.wait = wait;this.cm = cm;}@Overridepublic void run() {// TODO Auto-generated method stubInteger key = new Integer(1);if (!cm.containsKey(key)) {if (wait)suspend();System.out.println(cm.containsKey(key));cm.put(key, "value");}}// 模拟线程的切换private void suspend() {// TODO Auto-generated method stubtry {Thread.sleep(2);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
测试
public class ConcurrentMapStudy {public static void main(String[] args) {ConcurrentHashMap<Integer, String> cm = new ConcurrentHashMap<Integer, String>();Thread thread1 = new Thread(new PutValue(true, cm));Thread thread2 = new Thread(new PutValue(false, cm));thread1.start();thread2.start();}}
结果:false true
0 0
- Java并发编程读书笔记(二)之原子操作
- 并发编程之原子操作
- Java并发编程系列之十九:原子操作类
- Java并发编程(三)——原子操作
- Java并发编程中实现原子操作
- Java并发编程实践读书笔记(二)
- 《JAVA并发编程实践》读书笔记(二)
- Java并发编程艺术----读书笔记(二)
- Java并发编程之原子变量
- Java并发编程之原子变量
- Java 原子操作与并发(转)
- java特种兵读书笔记(5-3)——并发之原子性与锁
- Java多线程编程--(6)学习Java5.0 并发编程包--原子操作的一些类型
- Java并发编程(七)《12个原子操作类》
- java并发编程学习(四) 原子操作的实现原理
- java原子操作与并发
- Java 原子操作与并发
- 【Java并发编程】原子变量
- RedHat 6.2 yum group安装 KDE桌面
- 比较perl+python的优点和缺点
- PostgreSQL 权限信息表information_schema.table_privileges
- net::ERR_FILE_NOT_FOUND
- NAC在企业中的典型应用
- Java并发编程读书笔记(二)之原子操作
- 一站式学习C编程第5章
- 性能测试用例设计策略
- scp跨服务器取文件
- Appium0.18.x迁移到Appium1.x须知事项(灰常有用,解答了本人几个疑问)
- 拦截导弹 && 又见拦截导弹 (单调递增子序列 与 单调递增子序列的个数)
- 自定义控件的使用
- CloseHandle(),TerminateThread(),ExitThread()的区别
- android反编译之apk资源提取-by TomHawk