我想编写一个多线程程序,线程之间可以相互通信,一旦某一线程接到其他线程的消息,需要进行响应,如果没有得到消息,需要执行自己的代码,
需要解决的问题是线程不能一直等待消息的到来,也就是说消息可以打断线程的正常运行,而且当自己发完消息之后,不用考虑对方如何回应,继续执行自己的代码我用过的方法:1 事件监听:遇到的问题是当某一线程发消息给其他线程时,他自己需要等待对方的响应
              2 管道通信; 遇到的问题是等待消息的时候必须一直去读管道,请大家提出个方案,感激不尽~

解决方案 »

  1.   

    用消息中断现有线程运行的想法不切实际,而且一般来说没有必要。线程的处理过程run()函数里的代码是顺序运行的,除非时刻检查,否则无法得知消息的到来(硬件式的中断机制在java中没有实现)。同时一般线程处理的问题是耗时较长的计算或是io操作,在数据到达前,是没有事情可做的。如果有任务不需要等待输入数据,或者要求时刻保持运行,那么应该考虑再添加一个线程,专门处理这种事务。
        Java的线程同步技术有两种,一个是synchronized,也就是临界数据区加锁。另一个是wait/notify,也就是等待唤醒机制。两个线程之间的通信,一般采用临界数据区。至于管道,就是一个临界队列,加上生产/消费者模型,使用上面提到的两种同步技术,完全可以实现。
        如果有实际问题,最好发上来,可以根据实际的要求,设计线程结构,好过这样空谈理论了。