JAVA-基础语法-多线程基础-线程同步

网友投稿 457 2022-05-30

线程同步

多线程模型下,要保证逻辑正确,对共享变量进行读写时,必须保证一组指令以原子方式执行:即某一个线程执行时,其他线程必须等待:

┌───────┐     ┌───────┐

│Thread1│     │Thread2│

JAVA-基础语法-多线程基础-线程同步

└───┬───┘     └───┬───┘

│             │

│-- lock --   │

│ILOAD (100) │

│IADD         │

│ISTORE (101) │

│-- unlock -- │

│             │-- lock --

│             │ILOAD (101)

│             │IADD

│             │ISTORE (102)

│             │-- unlock --

▼             ▼

通过加锁和解锁的操作,就能保证3条指令总是在一个线程执行期间,不会有其他线程会进入此指令区间。即使在执行期线程被操作系统中断执行,其他线程也会因为无法获得锁导致无法进入此指令区间。只有执行线程将锁释放后,其他线程才有机会获得锁并执行。这种加锁和解锁之间的代码块我们称之为临界区(Critical Section),任何时候临界区最多只有一个线程能执行。

Java

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《基于Kubernetes的容器云平台实战》——1.4.4 容器存储
下一篇:Freeradus常见问题及解决方法
相关文章