[英]Java, pause thread execution while condition is not met
所以我有一個輸入線程,一個處理線程。 輸入線程獲取文件,對其進行解析並將其放入JSON隊列中。
public class inputThread extends Thread {
public void run() {
for(File f: inputFiles){
parse();
App.processingQueue.add(f);
}
}
然后,處理線程輪詢它們,並對其進行處理。
public class processingThread extends Thread {
//Main loop
while(!terminated){
App.processingQueue.poll();
process(...);
}
}
當queue.size()大於x時,有沒有一種簡單的方法可以暫停輸入線程的執行? 我查找了同步塊和等待/睡眠指令,但無法使它們正常工作。
謝謝!
是的,請使用BlockingQueue。 參見此處: https : //docs.oracle.com/javase/8/docs/api/java/util/concurrent/BlockingQueue.html
那么您必須使用阻塞方法:put()和take()
例如:
int MAXIMUM_CAPACITY = 10;
BlockingQueue<File> blockingQueue = new ArrayBlockingQueue(MAXIMUM_CAPACITY);
blockingQueue.put( )
blockingQueue.take()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.