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類實現執行緒間通訊 使用全域性變數實現執行緒間通訊 定義乙個全域性變數,不同的執行緒間可以通過修改全域性變數的值來進行通訊。例如 定義乙個控制線程的全域性變...