看了网络上很多资源对 JVM 的介绍
堆和方法区都是共享的
是不是没有加线程安全的措施(加锁等操作)都是非线程的安全的?
求解……
1
MrFireAwayH 2018 年 4 月 26 日 [是不是没有加线程安全的措施(加锁等操作)都是非线程的安全的]
因为:没有=非=不=否 所以:没有加线程安全的措施=不加线程安全的措施 结论:没有加线程安全的措施 = 非线程的安全的措施 |
2
lhx2008 2018 年 4 月 26 日 via Android
线程安不安全和堆区方法区有什么关系吗
|
3
orangex 2018 年 4 月 26 日 不是,举个反例,并发的读取(只读不写)也是安全的。
只不过很显然大部分场景中涉及到写,所以需要保证线程安全。 |
5
momocraft 2018 年 4 月 26 日
(自己知道安全--不安全) 和 (實際安全--不安全) 是兩個維度. 學得多的人這兩個維度夾角會很小.
不安全未必就一定出問題 |
6
flyzy2005 2018 年 4 月 27 日 via iPhone
CAS 是不是也没加锁?
|
7
shalk 2018 年 4 月 27 日 via iPhone
线程安全和 jvm 使用堆 没有直接关系. 是两个层面的事情.
例如 如果两个线程没有共享变量,这个两个线程的行为无论何种顺序都表现出正确的行为.那它们是线程安全的. 也不用加锁啊. 如果两个线程有一个共享的 Integer,进行累加. 出现了竞态条件,当然需要同步操作保证一下才安全. 但这和 jvm 堆似乎没有什么直接关系. |