噹噹前正在運行的線程退出時是否可以啓動新線程? 我爲框架編寫的代碼啓動一個線程,並鎖定(不是Java併發鎖定)文件。 我需要處理相同的文件,但我不能這樣做,因爲鎖由框架啓動的線程 保存。我的要求是啓動一個新的線程處理文件 一旦線程發起的線程完成Java - 在當前線程完成時啓動線程
謝謝, Senthil。
噹噹前正在運行的線程退出時是否可以啓動新線程? 我爲框架編寫的代碼啓動一個線程,並鎖定(不是Java併發鎖定)文件。 我需要處理相同的文件,但我不能這樣做,因爲鎖由框架啓動的線程 保存。我的要求是啓動一個新的線程處理文件 一旦線程發起的線程完成Java - 在當前線程完成時啓動線程
謝謝, Senthil。
你的基本代碼結構應該像他
public void run(){
//prepare
synchronized{
//Access File
}
//non-trivial statements
}
我的意思是不在任何java對象上。它鎖定文件系統中的一個文件。直到正在運行的線程完成後才能訪問該文件。因此,我現在想的就是鏈接一個新的線程,噹噹前正在運行的線程退出時開始。 – user330482
使用的Thread.join()方法
參考Example
連接方法掛起當前正在運行的線程直到新線程完成,這不是我想要的。我想在當前正在運行的線程退出時啓動一個新線程 – user330482
@ user330482爲什麼不能啓動兩個線程並在第一個線程中進行第二次連接? –
第一個線程是由框架發起的,我沒有任何控制權。 :( – user330482
下面是在啓動第二個線程的例子另一個線程結束:
public class TwoThreads {
public static void main(String[] args) {
class SecondThread implements Runnable {
@Override
public void run() {
System.out.println("Start of second thread");
try {
Thread.sleep(2000);
} catch (InterruptedException e) { }
System.out.println("End of second thread");
}
}
class FirstThread implements Runnable {
@Override
public void run() {
System.out.println("Start of first thread");
try {
Thread.sleep(1000);
} catch (InterruptedException e) { }
// Second thread gets launched here
new Thread(new SecondThread()).start();
System.out.println("End of first thread");
}
}
new Thread(new FirstThread()).start();
}
}
[看文檔](http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#join()) – akaIDIOT
標題的答案是:「這是可能的,但爲什麼不循環?「。我對這個描述的回答是:「'synchronized'關鍵字是你想要的嗎?」 –
不,我不能控制當前正在運行的線程。它鎖定了一些我也想處理的文件。不確定同步如何解決問題。你能更多地介紹嗎? – user330482