Java教程

Java并发基础

本文主要是介绍Java并发基础,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

多进程和多线程有哪些区别呢?

  • 资源:每个进程有自己的一套变量,而线程则可以共享数据。
  • 通信:共享变量使得线程之间的通信比进程之间的通信更加有效、更容易;
  • 创建:创建、撤销一个线程比启动新进程的开销小得多。

什么是线程

使用线程给其他任务提供机会

⚠️ 不要调用Thread类或Runnable对象的run方法。直接调用run方法,指挥执行同一个线程中的任务,而不会启动新线程。应该调用 Thread.start 方法,这个方法将创建一个执行run方法的新线程。

中断线程

没有可以强制线程终止的方法。然而,interrupt方法可以用来请求终止线程

对一个线程调用 interrupt 方法时,线程的 中断状态 将被置位。这是每一个线程都具有的boolean标志。每个线程都应该不时地检查这个标志,以判断线程是否被中断。

while(!Thread.currentThread().isInterrupted && more work){  // 实例方法
	do more work
}

如果线程被阻塞,就无法检测中断状态。这是产生InterruptedException异常的地方。当在一个被阻塞的线程(调用sleep或wait)上调用 interrupt方法时,阻塞调用将会被 Interrupted Exception异常中断。

中断一个线程只是引起线程的注意,被打断的线程可以决定如何响应中断。

如果使用了循环,并且迭代工作后使用可以被打断的方法(sleep等),那么 isInterrupted 检测既没有必要,也没有用处,因为当线程标记了中断标志,sleep 方法不会再执行,同时将中断标记清除

这篇关于Java并发基础的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!