最近一直在看《java并发编程实践》。
很大收获谈不上,至少见识到了并发世界的广博。
以前对java并发的概念是少之又少,感觉只需要用好synchronized关键字就好。
如今回想,实乃现实版的井中之蛙,狭隘至极。
书大概看完了,梳理下看到的一些点。
关键字
线程安全: 存在线程共享可变对象,则需要考虑线程安全。线程安全的定义:在多线程环境中,能永远保证程序的正确性。
原子性: 在这指的是基于线程的原子性。原子性操作:只能由一个线程单独访问的操作。即在执行该操作时,要么执行完,要么不执行,不再会执行的过程中插入其他线程。
竞态条件: 当程序的正确性取决于线程的执行顺序时。就可能会产生竞态条件。
复合操作: 与原子性操作相反。
内置锁: 每个对象都会有一个内置锁,可以使用synchronized关键字获取该锁,内置锁具有线程互斥性。 (重入: 持有锁的线程具有再次进入锁区域的权限。)
活跃性与性能:
锁粒度与性能:
设计相关
不可变对象一定是线程安全的。
封装有利于线程安全管理。
时间: 2024-10-14 04:46:19