簡體   English   中英

Java,在不滿足條件時暫停線程執行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM