maa*_*n81 8 java multithreading
如何将参数传递给java中已经运行的线程 - 而不是在构造函数中,并且可能没有使用wait()(可能??)
类似于" 如何将参数传递给Java线程"中的注释?
你的意思是将参数传递给已经运行的线程?因为所有当前的答案都是关于将参数传递给新线程... - Valentin Rocher 09年5月18日10:43
[编辑]
是的,我正在寻找像生产者/消费者模式的东西.
我想要的东西就像一个线程,其中有处理和准备键盘输入.另一个线程只是监视网络并将接收到的文本传递给处理线程.
Geo*_*rge 11
也许你真正需要的是阻塞队列.当你创建线程时,你传递阻塞队列,线程应该继续检查队列中是否有任何元素.在线程外部,您可以在线程"运行"时将元素放入队列.阻塞队列可以防止线程退出,如果它们无关.
public class Test {
public static void main(String... args) {
final BlockingQueue<String> queue = new LinkedBlockingQueue<String>();
Thread running = new Thread(new Runnable() {
@Override
public void run() {
while (true) {
try {
String data = queue.take();
//handle the data
} catch (InterruptedException e) {
System.err.println("Error occurred:" + e);
}
}
}
});
running.start();
// Send data to the running thread
for (int i = 0; i < 10; i++) {
queue.offer("data " + i);
}
}
}
Run Code Online (Sandbox Code Playgroud)