我有一种我想以螺纹类中的非静态方式在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();
}
}
}