如何将参数传递给java中已经运行的线程?

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)