如何锁定/暂停在另一个类中运行的线程?

时间:2011-08-02 09:13:19

标签: java multithreading

我有两节课。在Class1中我有一个线程,在Class2中我必须暂停/锁定该线程,该线程将在登录后立即启动。在我的场景中,在登录(在Class2中实现)之后,必须使线程等待更多额外的登录并从DB获取数据。请让我知道如何控制在不同类中的其他类中运行的线程。

的Class1:

public class Class1{
 Class2 cls2 = new Class2();
 cls2.logon();
 // login which will start the thread in the Class2 as well
 // Please suggest what should be done here

 // DB realated stuff need be done here
 // Have to unlock/resume the thread in Class2
}

等级2:

public class Class2{
 public void receiveMessage(String str){
   new StringProcessor(str);
 }

 public class StringProcessor implements Runnable {
  //do some stuff but have to wait for the DB related stuff in Class1
 }

 public void logon(){
  //Will create/logon the connection and the message will be start arriving
 }

}

实际上在登录后会有TCP / IP连接来接收消息。每当消息到达时,都会调用receiveMessage()方法。但我必须暂停

干杯, Sakthi。小号

1 个答案:

答案 0 :(得分:3)

有几种方法。

错误的是使用Thread.suspend / resume / destroy,因为它们已被弃用并且容易出现死锁。

你可以......

  1. 使用Object.wait,Object.notifyAll。
  2. 实现自己的信令机制
  3. 使用Semaphore类或java.util.concurrent中任何其他适合您需要的类。