从内部线程java访问外部类
在类OuterClass中,我有一个线程InnerThread。在线程中,我需要从OuterClass访问一个方法。我该怎么做?我试过:从内部线程java访问外部类,java,multithreading,class,outer-join,Java,Multithreading,Class,Outer Join,在类OuterClass中,我有一个线程InnerThread。在线程中,我需要从OuterClass访问一个方法。我该怎么做?我试过: public class OuterClass{ public static void main(String[]args){ Runnable thread = new innerThread(param); new Thread(thread).start(); public void method(param1
public class OuterClass{
public static void main(String[]args){
Runnable thread = new innerThread(param);
new Thread(thread).start();
public void method(param1, param2){
System.out.println("Test method");
}
public class InnerThread extends Thread{
public void run(){
System.out.println("Test thread")
OuterClass.this.method(param1, param2);
}
}
}
但是程序没有进入方法。这是为什么?它是如何工作的
编辑我确定线程正在运行,因为我在那里执行了其他操作,它们也正常工作,并且我在方法(param1,param2)的开头放了一个打印,所以我确定它没有进入方法。我只尝试了不带OuterClass的方法(param1,param2)。这个方法也不起作用。这个方法很好:
public class OuterClass {
public static void main(String[] args) throws InterruptedException {
Thread t = new Thread(new OuterClass().new InnerThread());
t.start();
t.join();
}
public void method(String param1, String param2) {
System.out.println("Test method ("+param1+","+param2+")");
}
public class InnerThread extends Thread {
public void run() {
System.out.println("Test thread");
method("A", "B");
}
}
}
印刷品
Test thread
Test method (A,B)
这可以通过创建两个单独的类来实现
1包含外部类
2创建外部类实例的其他类,即主类。
看一看
public class Main {
public static void main(String arg[]){
OuterClass o=new OuterClass(1,3);
}
}
class OuterClass{
int param,param2;
InnerThread t;
OuterClass(int x,int y){
this.param=x;
this.param2=y;
InnerThread t=new InnerThread();
t.start();
}
public class InnerThread extends Thread{
public void run(){
System.out.println("Test thread");
OuterClass.this.method();
}
}
public void method(){
System.out.println(this.param+this.param2);
}
}
你说“不进入方法”是什么意思?你是怎么确定的?你真的在启动线程吗?只要调用
方法
就可以了,除非你需要消除歧义。这个问题目前的形式还不够清楚-请提供一个例子。给定的代码是否编译过?我发现至少有两个问题:大写不一致和大括号缺失。请向我们提供一些代码,这些代码实际上说明了您的问题,并且不会人为地引入不相关的问题。@代码专家更不用说未分类和定义的参数以及缺少的空格了。输入方法()工作正常,输出有问题,所以我认为它没有输入该方法。我的错。