-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 なしで method(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

これは、OuterClass 2 を含む 2 つの別個のクラス
1 を作成することによって実現できます。
2 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 に答える