java 執行緒間通訊的幾種方式

2021-08-09 05:12:16 字數 1477 閱讀 3602

1.如何讓兩個執行緒依次執行

假設有兩個執行緒,乙個執行緒a,乙個執行緒b,兩個執行緒分別依次列印 1-3 三個數字即可。

package test;/**

/** *@author administrator

*@createdate 2017-10-10

*/public

class

demo1

});thread thread2 = new thread(new runnable()

});thread1.start();

thread2.start();

}private

static

void

printnumber(string threadname) catch (interruptedexception e)

system.out.println(threadname + " print:" +i);}}

}

其中的 printnumber(string) 實現如下,用來依次列印 1, 2, 3 三個數字:通過將執行緒休眠的方式來控制兩個執行緒一次來執行。執行的結果如下:可以看到執行的結果是兩個執行緒依次執行。

2.如何讓兩個執行緒交叉順序執行

我現在希望 a 在列印完 1 後,再讓 b 列印 1, 2, 3,最後再回到 a 繼續列印 2, 3。要如何來執行呢。看如下的**

package test;/**

/** *@author administrator wangtao

*@createdate 2017-10-10

*/public

class

demo2

});thread thread2 = new thread(new runnable() catch (interruptedexception e)

printnumber("b");

}});

thread1.start();

thread2.start();

}private

static

void

printnumber(string threadname) catch (interruptedexception e)

system.out.println(threadname + " print:" +i);}}

}

利用thread.join()方法來實現,join()方法的作用是等待呼叫執行緒執行完之後再執行任務。看最後的執行結果知道,

b執行緒是等到a全部執行完成之後才開始執行。

Java執行緒間通訊方式的總結

1 thread.join 方法 假設有a b兩個執行緒,在b執行緒的run 方法中呼叫a.join 方法會讓 b一直等待直到 a 執行完畢才繼續執行。2 object.wait 和object.notify 定義全域性鎖object lock new object 假設有a b兩個執行緒,在a執行...

程序間通訊的方式?執行緒間通訊的方式?

管道 命名管道 訊號量 訊息佇列 訊號及共享記憶體只適用於本地程序間通訊,套接字則可用於遠端通訊,因而一般用於網路程式設計。部分概念解釋 匿名管道是在快取中開闢的輸出和輸入檔案流的空間,只能用於父子關係的程序之間。因為父子程序的輸入和輸出檔案描述符是一致的。命名管道是一種實際存在的fifo檔案,稱作...

執行緒間通訊方式

執行緒間通訊方式 收藏 執行緒間通訊可以通過下列三種方法 1 使用全域性變數實現執行緒間通訊 2 使用訊息實現執行緒間通訊 3 使用cevent類實現執行緒間通訊 使用全域性變數實現執行緒間通訊 定義乙個全域性變數,不同的執行緒間可以通過修改全域性變數的值來進行通訊。例如 定義乙個控制線程的全域性變...