java的线程之间如何进行消息传递
比如说我有Thread1和Thread2两个线程,Thread1和Thread2之间可以互相send和receive消息,我可以自己定义一个message类,请问这种用j...
比如说我有Thread1 和Thread2 两个线程,Thread1 和Thread2之间可以互相send 和receive 消息,我可以自己定义一个message类,请问这种用java可以实现吗,代码怎么写啊
我说的是普通java程序,不是网页 展开
我说的是普通java程序,不是网页 展开
3个回答
展开全部
原生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线程池自动调度
展开全部
原生Java线程之间只能通过共享内存(同一个虚拟机内)来通信,当然你可以通过自己实现,使得线程看起来可以通过消息通信(比如Scala的Actor)
可以通过消息传递,但Actor本身和线程是有很大不同,不过看起来具备了一些线程功能 。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要通过服务器。要是你按照你的意思来说。腾讯的服务器有什么用呢。你说是吗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询