Java 从新线程回调到启动线程的类
我有一个调用新线程的类Java 从新线程回调到启动线程的类,java,multithreading,callback,Java,Multithreading,Callback,我有一个调用新线程的类 public class MainClass{ private void cleardata() { // do something on a separate thread new Thread(new Runnable() { @Override public void run() {
public class MainClass{
private void cleardata() {
// do something on a separate thread
new Thread(new Runnable() {
@Override
public void run() {
//Do Something
//After this I would like to notify my MainClass that some thing has been done and pass a value.
}
}
}
private void callbackFunc(int a){
// Do something based on value of a
}
}
我的主类中有一个函数。但是我如何从我的新线程调用这个函数,以便接收回调呢。
谢谢。在这种情况下,将MainClass的实例传递给thread类((在创建过程中)),以便它可以对其调用方法。按照其他人的建议拥有内部类也是一个不错的选择 类似的东西-
class MainClass {
private void cleardata() {
new Thread(new MyThread(this)).start();
}
}
类MyThread实现可运行{
private MainClass mc;
MyThread(MainClass mc) {
this.mc = mc;
}
public void run() {
// do something
// mc.someMethod();
}
}您应该能够通过名称调用
MainClass
中的方法,就像您直接从MainClass
本身内部调用一样(而不是从内部类)
如果要调用的方法名与内部类从对象继承的方法名冲突,则可以使用MainClass作为调用的前缀。这,例如MainClass.this.toString()
在MainClass
上调用toString
,而只调用toString()
在内部类实例上调用它。只需执行以下操作:
public class MainClass{
private void cleardata() {
// do something on a separate thread
new Thread(new Runnable() {
@Override
public void run() {
callBackFunc(result);
}
}
}
private void callBackFunc(int a) {
}
}
public class MainClass{
private void cleardata() {
// do something on a separate thread
new Thread(new Runnable() {
@Override
public void run() {
//Do Something
notifyTheClass("a parameter");
}
}
private void notifyTheClass(String aParam) {
//..do something else
}
}
}
但它与线程无关,这是关于内部类的。如果希望主线程等待新线程完成,请使用。或者使用其他一些多线程原语。如果该方法与线程在同一个类中,您可以调用它并传递结果。您是否尝试过从run()内部调用该操作?请不要混淆thread
和Runnable
。有什么区别?非常感谢,一个简单的问题。如果线程来自同一个类,那么即使私有函数也可以访问?@Sunny是的,允许内部类或静态嵌套类访问其包含类的所有成员,即使是私有成员。private
修饰符限制对类主体词法范围的访问,其中包括嵌套在其中的任何其他类。