在线程中从类创建线程的类中调用一种方法



我有一种我想以螺纹类中的非静态方式在runnerClass中调用的方法。

public class CallingClass{
    CallingClass(){
        ClassTwo thread = new ClassTwo();
        thread.start();
    }
    public void someMethod(){}
}
public class ThreadClass extends Thread{
    public void run(){
        //Some thread logic
        CallingClass.someMethod();
    }
}

显然这行不通。该方法不是静态的(我不允许将其静态),但是在上面的示例中,我试图以静态方式访问它,如果我认为它最好代表我想做的。
如果有道理,我希望该线程能够通知调用class的实例,它需要调用somemethod()

是否有一种整洁的方法?

创建具有CallingClass类型的参数的ClassTwo限制器如何?

public class ThreadClass extends Thread{
    CallingClass callingClass;
    public ThreadClass(CallingClass callingClass) {
            this.callingClass = callingClass;
    }
    public void run(){
        //Some thread logic
        callingClass.someMethod();
    }
}

并这样创建ClassTwo

public class CallingClass{
    CallingClass(){
        ClassTwo thread = new ClassTwo(this);
        thread.start();
    }
    public void someMethod(){}
}

您可以将threadClass用作呼叫频道的内部类别,然后直接调用mothod。

 public class CallingClass{
    CallingClass(){
        ClassTwo thread = new ClassTwo();
        thread.start();
    }
    public void someMethod(){}
    public class ThreadClass extends Thread{
    public void run(){
        //Some thread logic
        someMethod();
    }
}
}

最新更新