java的线程之间如何进行消息传递

比如说我有Thread1和Thread2两个线程,Thread1和Thread2之间可以互相send和receive消息,我可以自己定义一个message类,请问这种用j... 比如说我有Thread1 和Thread2 两个线程,Thread1 和Thread2之间可以互相send 和receive 消息,我可以自己定义一个message类,请问这种用java可以实现吗,代码怎么写啊
我说的是普通java程序,不是网页
展开
 我来答
manyfaces
2011-09-29 · TA获得超过1068个赞
知道小有建树答主
回答量:1808
采纳率:0%
帮助的人:981万
展开全部
原生Java线程之间只能通过共享内存(同一个虚拟机内)来通信。当然你可以通过自己实现,使得线程看起来可以通过消息通信。比如Scala的Actor,可以通过消息传递,但Actor本身和线程是有很大不同,不过看起来具备了一些线程功能 。
更多追问追答
追问
我想实现的是这样的, 比如Thread1发个消息给Thread2, 内容是让Thread2干A事,Thread2接到这个消息,就开始干A事。这应该是异步的,如果通过共享内存怎么实现呢,如果自己实现,应该怎么实现? 谢谢啊
追答
这可以有很多种实现方式,比如可以用CountDownLatch,初始时用await阻塞线程2,当Thread1做完事情之后打开这个latch(一般叫闭锁)。还可有用信号量,或者CycleBarrier之类的数据结构。

如果实现一套简单消息传递机制,可以抽象出一个Actor,附带一个mailbox(可以是一个BlockingQueue),它是一个Runnable,它的任务是不断扫描mailbox里的消息并处理。Thread2也可以抽象出一个Actor,它的任何很简单,做自己的事,并在完成后把消息放到Thread1的mailbox里。两个Runnable可以用JDK线程池自动调度
兴0809
2015-08-04 · 超过59用户采纳过TA的回答
知道小有建树答主
回答量:121
采纳率:66%
帮助的人:77.7万
展开全部
  1. 原生Java线程之间只能通过共享内存(同一个虚拟机内)来通信,当然你可以通过自己实现,使得线程看起来可以通过消息通信(比如Scala的Actor)

  2. 可以通过消息传递,但Actor本身和线程是有很大不同,不过看起来具备了一些线程功能 。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
甜而星oQ
2011-09-29 · 超过15用户采纳过TA的回答
知道答主
回答量:114
采纳率:0%
帮助的人:47.2万
展开全部
要通过服务器。要是你按照你的意思来说。腾讯的服务器有什么用呢。你说是吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式