-3

在 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),但它也没有工作。

4

2 回答 2

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)
于 2013-03-03T00:03:50.263 回答
0

这可以通过创建两个单独的类
1 来实现,其中包含
OuterClass 2 Other,它们处理 OuterClass 的实例,即主类。
看一看。

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);
   }
}
于 2013-03-03T00:22:12.030 回答