gpt4 book ai didi

Java,当条件不满足时暂停线程执行

转载 作者:行者123 更新时间:2023-12-02 12:49:59 26 4
gpt4 key购买 nike

所以我有一个输入线程和一个处理线程。输入线程获取文件,解析它们并将它们放入 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时,是否有一种简单的方法可以暂停输入线程执行?我查找了同步块(synchronized block)和等待/ sleep 指令,但我无法让它们中的任何一个工作。

谢谢!

最佳答案

是的,使用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()

关于Java,当条件不满足时暂停线程执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44630907/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com