java线程简单问题
初学者问个java线程间通信的简单问题。
两个线程,一个从串口取数据,一个显示。从串口读数据的线程完成一次读取之后如何通知显示线程呢?我现在做的是显示的线程不断的去缓冲区里检查是否有新数据到达,有没有更好的方法?java里有好多fire函数是干这个的吗?
谢谢了!
------解决方案--------------------使用管道,PipedInputStream, PipedOutputStream,
对于他们的使用,google
------解决方案--------------------用一个同步锁,应该能解决问题
------解决方案--------------------public class display{
public static void main(String args[]){
Thread t = new Reader()
t.start();
synchronized(t){
try{ t.wait();}catch(Exception e){}
...
}
}
}
class reader extends thread{
public void run(){
synchronized(this){
//读取
notify();
}
}
}
用wait()和notify()
------解决方案--------------------wait()和notify()是java中用来控制线程交互的两个方法,是Object的方法,使用时要先得到这个object的lock
------解决方案--------------------一个发送 一个接收类
通过PipedInputStream PipedOutputStream来写和读就可以了
------解决方案--------------------建议用同步来处理,
一个线程是生产者,不停的生产产品,
另一个线程是消费者,不停的消费产品
当消费者去取数据时,发现数据不存在,则进入wait状态,等待生产者的唤醒,生产者生产出了数据后就notify消费者,把它唤醒去处理数据.
------解决方案--------------------学习中哈,顶顶!
------解决方案--------------------阻塞队列...
------解决方案--------------------PV操作……