600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > java线程的内存模型_java多线程内存模型

java线程的内存模型_java多线程内存模型

时间:2024-07-30 02:17:50

相关推荐

java线程的内存模型_java多线程内存模型

java多线程内存模型:

可见性

要实现共享变量的可见性,必须保证两点:

1、线程修改后的共享变量能够及时从工作内存刷新到主内存中;

2、其他线程能够及时把共享变量的最新值从主内存更新到自己的工作内存中;

java语言层面的可见性实现方式(不包含jdk1.5后concurrent中包含的的)

* synchronized

* volatile

Synchronized实现可见性

synchronized可以实现互斥锁(同步),从而保证在任何一个时刻只有一个线程在执行锁内部的代码(原子性);

synchronized能够实现

* 原子性(同步锁)

* 内存可见性

JMM关于synchronized的两条规定

* 线程解锁前(退出synchronized代码块),必须把共享变量的最新值刷新到主内存中;

*线程加锁前(进入synchronized代码块)时,将清空工作内存中共享变量的值,从而使用共享变量时需要从主内存中重新读取最新的值(注意:加锁与解锁需要是同一把锁)

原子性

指令重排序

内存可见性

volatile无法保证原子性

主线程等待 子线程都运行完才结束

使用while(Thread.activeCount() > 1) {

Thread.yield();

}

所有子线程都join()方式:/nms312/article/details/30115055

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。