Java 如何将生产者类外部的值添加到生产者线程(阻塞队列实现)

Java 如何将生产者类外部的值添加到生产者线程(阻塞队列实现),java,producer-consumer,blockingqueue,Java,Producer Consumer,Blockingqueue,我想从类外添加一些字符串到sharedQueue;实现这一目标的最佳实践是什么 从外部类本身直接添加到sharedQueue并传递构造函数 将该值发送给构造函数并从中添加 还有别的方法吗 如果答案是1或2,那么为什么所有的例子都显示了整数值放入生产者的run方法和取出消费者的方法 class Producer implements Runnable { private final BlockingQueue<String> sharedQueue; public

我想从类外添加一些字符串到
sharedQueue
;实现这一目标的最佳实践是什么

  • 从外部类本身直接添加到
    sharedQueue
    并传递构造函数
  • 将该值发送给构造函数并从中添加
  • 还有别的方法吗
  • 如果答案是1或2,那么为什么所有的例子都显示了整数值放入生产者的
    run
    方法和取出消费者的方法

    class Producer implements Runnable {
    
        private final BlockingQueue<String> sharedQueue;
    
        public Producer(BlockingQueue<String> sharedQueue) {
            this.sharedQueue = sharedQueue;
        }
    
        @Override
        public void run() {
            try {
                sharedQueue.put("value passed from outside class");
            } catch (InterruptedException ex) {
                Logger.getLogger(Producer.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    
    }
    
    类生成器实现可运行{
    私有最终阻塞队列sharedQueue;
    公共生产者(封锁队列共享队列){
    this.sharedQueue=sharedQueue;
    }
    @凌驾
    公开募捐{
    试一试{
    sharedQueue.put(“从类外部传递的值”);
    }捕获(中断异常例外){
    Logger.getLogger(Producer.class.getName()).log(Level.SEVERE,null,ex);
    }
    }
    }
    
    在降价中,您可以使用1。9(带点)创建一个列表,在双行结束后。现在,代码可以用三个回号(`)包装,内联代码可以用一个回号包装(您可以通过单击查看我的更改。通常情况下,请在问题末尾使用问号。请您再看一看代码前面的句子好吗?如果您要放入队列中的字符串无法立即使用,则您可以将必须使用字符串的类的实例传递给
    生产者。
    然后ucer在稍后的时间点从类实例中请求值。