发信号给线程

时间:2014-01-12 16:55:40

标签: java multithreading

如何从线程外部调用线程内部的方法。在某些情况下,b()将从a()调用,但在某些情况下,我想通知线程从线程外部转到b()。我假设我可以使用观察者模式来解决这个问题,但我已经在这个线程上使用观察者模式来做其他事情,除非可以使用观察者模式两次。

Thread t = new Thread(new clientThread());
t.start();

boolean someBool = false;
class clientThread implements Runnable{
     run(){
         a();
     }
     public void a(){
        while(!someBool){
            Object ob = in.readObject();
            b();
            //do stuff   
     }
     public void b() {
           while(true){
               Object ob = in.readObject();       
               //do stuff
           }
     }
} 

t.b();

1 个答案:

答案 0 :(得分:0)

您需要对ClientThread实例的引用:

ClientThread client = new ClientThread();
Thread t = new Thread(client);
t.start();

client.b();

注意:无法“调用”另一个执行线程,只能发出信号。因此,OP问题必须减少为'我怎样才能调用java线程对象内的方法'。所以,@ Keppil答案不正确,不应该被删除。