JAVA-基础语法-多线程基础-守护线程

网友投稿 513 2022-05-30

守护线程

非守护线程结束完成后,JVM不关心守护线程是否结束,都会 退出虚拟机。

所以守护线程不能持有需要关闭的资源,如文件关闭等。不然会造成文件丢失。

创建守护线程。

Thread t = new MyThread();

t.setDaemon(true);

t.start();

线程同步

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

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

│Thread1│     │Thread2│

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

│             │

│-- lock --   │

│ILOAD (100) │

│IADD         │

│ISTORE (101) │

│-- unlock -- │

│             │-- lock --

JAVA-基础语法-多线程基础-守护线程

│             │ILOAD (101)

│             │IADD

│             │ISTORE (102)

│             │-- unlock --

▼             ▼

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

Java

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

上一篇:安全渗透测试,漏洞扫描产品汇总大全(后续更新使用方法)
下一篇:《Linux系统安全:纵深防御、安全扫描与入侵检测 》 —1.4.2 特别注意弱密码问题
相关文章