Java 串行线程限制

Java 串行线程限制,java,multithreading,thread-safety,Java,Multithreading,Thread Safety,我试图用java实现串行线程限制。我已经在线程a的run方法中创建了一个可变对象的引用。现在我想将对象交给线程B,这样只有线程B对对象具有互斥性,并且可以看到a对对象所做的修改(我可以通过安全地发布它来确保这一点),但是如何确保只有线程B可以访问对象,而没有其他线程可以访问?书中说,使用阻塞队列可以轻松完成。有谁能帮我实现这个功能吗?您可以使用两个线程之间的共享。一个线程(线程B)将发送null,另一个线程(线程A)将发送所需的对象。因此线程A将安全地将对象发布到线程B。您可以让线程A将对象放入

我试图用java实现串行线程限制。我已经在线程a的run方法中创建了一个可变对象的引用。现在我想将对象交给线程B,这样只有线程B对对象具有互斥性,并且可以看到a对对象所做的修改(我可以通过安全地发布它来确保这一点),但是如何确保只有线程B可以访问对象,而没有其他线程可以访问?书中说,使用阻塞队列可以轻松完成。有谁能帮我实现这个功能吗?

您可以使用两个线程之间的共享。一个线程(线程B)将发送null,另一个线程(线程A)将发送所需的对象。因此线程A将安全地将对象发布到线程B。

您可以让线程A将对象放入阻塞队列,线程B将其取下。在这种情况下,没有存储对象的内部容量的a将是一个很好的候选对象,因为您只需要交换一个对象。这比交换器稍微简单一些,因为您只需要在一个方向上交换对象。Javadoc甚至提到“交换器可以被视为同步队列的双向形式”