当前位置: 技术问答>java相关
初学JAVA,一个问题不知如何实现,请高手指点。
来源: 互联网 发布时间:2015-06-08
本文导语: 我编写的是一个用socket通信的程序,已经写好了一个通信类A,可以按自定的协议格式发送各种报文,同时还启动了一个线程来随时接收数据。现在需要编写一个接口类B,它提供一系列方法,每个方法实现与对方一种...
我编写的是一个用socket通信的程序,已经写好了一个通信类A,可以按自定的协议格式发送各种报文,同时还启动了一个线程来随时接收数据。现在需要编写一个接口类B,它提供一系列方法,每个方法实现与对方一种通信操作,该操作由与通信对端的若干个报文的交换完成。简单来说,B的一个方法a,首先调用A的一个方法向对方发送一个报文,当A的接收方法接收到对方的回应报文时,将报文内容传回给B.a(),B.a()再根据报文内容返回相应的值。
我搞不明白的是,在B.a()中,调用完A的发送方法后,必须等待A接收到并返回数据后才能继续,这个等待过程如何实现,A接收到的数据又如何传回给B.a()?
请高手多多指点,最好说详细点,先谢过了。
我搞不明白的是,在B.a()中,调用完A的发送方法后,必须等待A接收到并返回数据后才能继续,这个等待过程如何实现,A接收到的数据又如何传回给B.a()?
请高手多多指点,最好说详细点,先谢过了。
|
多线程,这属于典型的Producer/Consumer 问题
The Producer/Consumer Example
The Producer generates an integer between 0 and 9 (inclusive), stores it in a CubbyHole object, and prints the generated number. To make the synchronization problem more interesting, the Producer sleeps for a random amount of time between 0 and 100 milliseconds before repeating the number generating cycle:
public class Producer extends Thread {
private CubbyHole cubbyhole;
private int number;
public Producer(CubbyHole c, int number) {
cubbyhole = c;
this.number = number;
}
public void run() {
for (int i = 0; i
The Producer/Consumer Example
The Producer generates an integer between 0 and 9 (inclusive), stores it in a CubbyHole object, and prints the generated number. To make the synchronization problem more interesting, the Producer sleeps for a random amount of time between 0 and 100 milliseconds before repeating the number generating cycle:
public class Producer extends Thread {
private CubbyHole cubbyhole;
private int number;
public Producer(CubbyHole c, int number) {
cubbyhole = c;
this.number = number;
}
public void run() {
for (int i = 0; i