Java多執行緒中的interrupt方法的使用
轉載出處:http://my.oschina.net/summerpxy/blog/198457
在java中,開啟一個多執行緒是很簡單的,只需要new一個runnable就可以了,但是要停止一個執行緒,卻不能簡單的使用Thread.stop()方法。
首先來說說java中的中斷機制,Java中斷機制是一種協作機制,也就是說通過中斷並不能直接終止另一個執行緒,而需要被中斷的執行緒自己處理中斷。當呼叫interrupt()方法的時候,只是設定了要中斷執行緒的中斷狀態,而此時被中斷的執行緒的可以通過isInterrupted()或者是interrupted()方法判斷當前執行緒的中斷狀態是否標誌為中斷。我們可以從interrupt()方法來看:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public void interrupt() {
if ( this != Thread.currentThread())
checkAccess();
synchronized (blockerLock) {
Interruptible b = blocker;
if (b != null ) {
interrupt0();
// Just to set the interrupt flag b.interrupt();
return ;
}
}
interrupt0();
}
|
從這個方法中我們可以看到,最直接的呼叫時interrupt0()這個方法,而這個方法僅僅是設定了執行緒中斷狀態。
我們再看看isInterrupted()方法:
1 2 3 4 5 6 7 8 9 10 |
public boolean isInterrupted() {
return isInterrupted( false );
}
/**
* Tests if some Thread has been interrupted. The interrupted state
* is reset or not based on the value of ClearInterrupted that is
* passed.
*/
private native boolean isInterrupted( boolean ClearInterrupted);
|
從這個方法中,我們可以猜測到,isInterrupted()方法僅僅是檢查了當前執行緒的中斷狀態,但是不會清除這個狀態。
相關推薦
白話理解java多執行緒中join()方法
join字面意思是加入,我理解為插隊. 舉例:媽媽在炒菜,發現沒喲醬油了,讓兒子去打醬油,兒子打完醬油,媽媽炒完菜,全家一起吃 package cn.yh.thread01; /** * *
JAVA多執行緒中join()方法的詳細分析
雖然關於討論執行緒join()方法的部落格已經非常極其特別多了,但是前幾天我有一個困惑卻沒有能夠得到詳細解釋,就是當系統中正在執行多個執行緒時,join()到底是暫停了哪些執行緒,大部分部落格給的例子看起來都像是t.join()方法會使所有執行緒都暫停並等待t的執行完畢。當然
Java多執行緒中join方法的理解
[CustomThread1] Thread start. //執行緒CustomThread1起動 [CustomThread1] Thread loop at 0 //執行緒CustomThread1執行 [CustomThread1] Thread loop at 1 //執行緒Cu
Java多執行緒中所有方法的解析
一、run()和start() 這兩個方法應該都比較熟悉,把需要並行處理的程式碼放在run()方法中,start()方法啟動執行緒將自動呼叫 run()方法,這是由Java的記憶體機制規定的。並且run()方法必須是public訪問許可權,返回值型別為void。 二
Java—Java多執行緒中join方法的理解
[CustomThread1] Thread start. //執行緒CustomThread1起動 [CustomThread1] Thread loop at 0 //執行緒CustomThread1執行 [CustomThread1] Thread loop at 1 //執行緒Cu
Java多執行緒中join方法的實現
方法join的作用是使所屬的執行緒物件t正常執行run()方法中的任務,而使當前執行緒z進行阻塞,等待t銷燬後再繼續執行z後面的程式碼。 下面貼出join方法的原始碼: public final synchronized void join(long millis)
Java多執行緒中,Join和Interrupt()方法的使用
更多詳細的解答請轉至:http://my.oschina.net/summerpxy/blog/198457;http://uule.iteye.com/blog/1101994;(比如有一個執行緒t.當在Main執行緒中呼叫t.join()的時候,那麼Main執行緒必須拿
Java多執行緒中的interrupt方法的使用
轉載出處:http://my.oschina.net/summerpxy/blog/198457 在java中,開啟一個多執行緒是很簡單的,只需要new一個runnable就可以了,但是要停止一個執行緒,卻不能簡單的使用Thread.stop()方法。
Java多執行緒中注入Spring的Bean-使用靜態方法直接取的容器中的spring物件
目前認為比較好的解決方案。 1,工具類 public class SpringApplicationContextHolder implements ApplicationContextAware { private static ApplicationContext context
java多執行緒中關於join方法的使用
Thread的非靜態方法join()讓一個執行緒B“加入”到另外一個執行緒A的尾部。在A執行完畢之前,B不能工作。例如: Thread t = new MyThread(); t.start(); t.join(); 另外,j
java多執行緒中對於join方法的理解
對於多執行緒的join方法一直理解得很模糊,大致看了一些資料,JDK是這樣說的:join public final void join (long millis )throws InterruptedException Waits at most millis
java多執行緒中的join方法詳解
方法Join是幹啥用的? 簡單回答,同步,如何同步? 怎麼實現的? 下面將逐個回答。 自從接觸Java多執行緒,一直對Join理解不了。JDK是這樣說的:join public final void join(long millis)throws InterruptedException Wait
Java 多執行緒中。兩個執行緒交替執行,一個輸出偶數,一個輸出奇數(方法二)
package com.up366.thread.example; import java.util.concurrent.Semaphore; /** * Java 多執行緒中。兩個執行緒交替執
Java 多執行緒中。兩個執行緒交替執行,一個輸出偶數,一個輸出奇數(方法一)
public class DigitPrinterExample { public static void main(String[] args) { Number num =
Java多執行緒中join、yield、sleep方法詳解
在Java多執行緒程式設計中,Thread類是其中一個核心和關鍵的角色。因此,對該類中一些基礎常用方法的理解和熟練使用是開發多執行緒程式碼的基礎。本篇主要總結一下Thread中常用的一些靜態方法的含義及程式碼中的使用。 sleep方法 原始碼如下: /** * Causes the curr
Java多執行緒中Synchronized簡介和Static Synchronized的區別
在進行Java開發時,多執行緒的開發是經常會使用的。首先會問一個小問題啊,在Java中有幾種方法可以建立一個執行緒? 我給的答案是3種。(如果還有其他的請留言告訴我哈。) 1、建立直接繼承自Thread類建立執行緒子類。 步驟如下:a 定義一個子類,同時
Java多執行緒之join()方法
概要 本章,會對Thread中join()方法進行介紹。涉及到的內容包括: 1. join()介紹 2. join()原始碼分析(基於JDK1.7.0_40) 3. join()示例 來源:http://www.cnblogs.com/skywang12345/p/34792
白話理解java多執行緒之join()方法
join字面意思是加入,我理解為插隊. 舉例:媽媽在炒菜,發現沒喲醬油了,讓兒子去打醬油,兒子打完醬油,媽媽炒完菜,全家一起吃 package cn.yh.thread01; /** * * 打醬油的例子 */ public class Demo03 { public stat
java多執行緒中的異常處理
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
java多執行緒中顯式鎖的輪詢檢測策略
顯式鎖簡介 java5.0之前,在協調對共享物件的訪問時可以使用的機制只有synchronized和volatile,java5.0增加了一種新的機制:ReentrantLock。 鎖像synchronized同步塊一樣,是一種執行緒同步機制,與synchronized不同的是ReentrantLock提