JAVA多线程的问题

Left_you 2013-10-29 04:02:01
纠结了好久了。
1.客户端发送查询聊天记录的请求,服务端就会产生一个线程A,通过这个线程服务端可以向客户端回馈信息。
由于聊天记录不需要时刻更新,所以这种A线程一产生就会在服务端那里阻塞(或挂起)。
2.这时候客户端又传来一个发送信息的请求,此时服务端也会产生一个线程B,通过这个线程来更新服务端保存的聊天记录。
3.B执行结束后,聊天记录更新了,所以需要唤起A线程,反馈记录给客户端。

网上查了半天,wait()和notify()怎么一用就报错...
谁能提供点可行的代码学习一下吗?
...全文
154 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
MiceRice 2013-10-29
  • 打赏
  • 举报
回复
引用 5 楼 Left_you 的回复:
我不知道怎么在B线程结束后唤醒A。我想,通过A.join()来实现也许比较好做?
应该是B在“结束前”唤醒A。 A中: synchronized(某公用对象) { 某公用对象.wait(); } B中: public void run() { .... synchronized(某公用对象) { 某公用对象.notifyAll(); } } 样例代码是给你参考发言者线程如何唤醒其它线程的过程。
Left_you 2013-10-29
  • 打赏
  • 举报
回复
引用 4 楼 ldh911 的回复:
代码样例可以参考下: http://blog.csdn.net/ldh911/article/details/7268879
我不是想写聊天室,我只是想多了解一下多线程的知识。
Left_you 2013-10-29
  • 打赏
  • 举报
回复
引用 3 楼 zhuweisyyc 的回复:
你的A挂起是通过什么实现的,是wait()方法?如果是,那么肯定加了共享资源,你唤醒的时候,用共享资源notify下。 synchronized (object) { }
我不知道怎么在B线程结束后唤醒A。我想,通过A.join()来实现也许比较好做? 多线程这块一直没接触,菜啊。
MiceRice 2013-10-29
  • 打赏
  • 举报
回复
代码样例可以参考下: http://blog.csdn.net/ldh911/article/details/7268879
zhuweisyyc 2013-10-29
  • 打赏
  • 举报
回复
你的A挂起是通过什么实现的,是wait()方法?如果是,那么肯定加了共享资源,你唤醒的时候,用共享资源notify下。 synchronized (object) { }
Left_you 2013-10-29
  • 打赏
  • 举报
回复
引用 1 楼 AA5279AA 的回复:
其实楼主的这个说法我还是有点迷糊的。不知道是不是我理解错误 1中线程挂起了,如果不发送第二个请求怎么办?不返回了? 看情况楼主应该是写了代码之后测试出问题才发帖子的,可以的话那就把代码发出来吧。 一起来参谋参谋吧
这是一个web服务器,我代码结构有点杂,分成了很多小类,还是不发了。 1中线程挂起了,如果不发送第二个请求怎么办?不返回了? 是的,可以不返回。 A、B两个线程可以说是没多大联系,只是A一直挂起,然后服务器处理完B请求后要唤起A。
失落夏天 2013-10-29
  • 打赏
  • 举报
回复
其实楼主的这个说法我还是有点迷糊的。不知道是不是我理解错误 1中线程挂起了,如果不发送第二个请求怎么办?不返回了? 看情况楼主应该是写了代码之后测试出问题才发帖子的,可以的话那就把代码发出来吧。 一起来参谋参谋吧

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧