java中如何在一个线程中阻塞其他线程
问题具体点是这样的,多个线程中,a线程执行到某一步时阻塞所有线程包括主线程,a线程执行到另一步时唤醒其他线程让其他线程正常执行(小白跪求大神指导)...
问题具体点是这样的,多个线程中,a线程执行到某一步时阻塞所有线程包括主线程,a线程执行到另一步时唤醒其他线程让 其他线程正常执行(小白跪求大神指导)
展开
1个回答
展开全部
假设你有一个主线程,线程名为:Thread_A,然后通过Thread_A创建了线程Thread_B、Thread_C,并将线程Thread_B、Thread_C作为局部变量的方式存储在Thread_A中,并调用Thread_B、Thread_C的start()方法开始执行Thread_B、Thread_C,当Thread_A执行到你要停止的地方就分别调用Thread_B、Thread_C的Wait()方法,使Thread_B、Thread_C暂停,然后线程Thread_A继续执行,直到Thread_A中调用Thread_B、Thread_C的notify()方法使得Thread_B、Thread_C继续执行,大体上就是这样!
追问
我弄得这个主线程是一个服务器,客户端什么时候连接是不可预测的,而且客户端都是一样的,是客户端运行时需要在特定的一段阻塞其他所有线程,小弟我今天想了好久头都胀大了,晕晕乎乎的,请老兄说的更明白一点,小弟感激不尽啊,,,,,
追答
你的意思是不是如果有多个客户端同时连接到服务器上来了,然后其中某一个客户端线程执行到某个位置了要阻塞其它的客户端线程啊?如果是这种情况,哪就有两种可能性,如果你是所有客户端线程执行到同一段代码的时候需要等待其它线程先执行完了自己再执行,那么你可以考虑使用JAVA的多线程同步机制,这个网上有很多你百度一下就能查到资料;还有一种情况是,多个客户端线程,其中一个在做某件事情的时候,需要其它客户端线程,立刻停止,那么这种情况的话,处理逻辑就是将所有的客户端线程都存储在全局变量中,这样就能使用之前回答的那样的WAIT、NOTIFY的机制控制就行了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询