多进程和多线程有哪些区别呢?
什么是线程
使用线程给其他任务提供机会
⚠️ 不要调用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 方法不会再执行,同时将中断标记清除。