在类OuterClass中,我有一个Thread InnerThread。在线程中我需要从OuterClass访问一个方法。我该怎么做呢?我试过了:
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.this的方法(param1,param2),但它也没有用。
答案 0 :(得分:1)
这很好用:
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 :(得分:0)
这可以通过创建两个单独的类来实现
1包含OuterClass
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);
}
}