从内部线程java访问外部类

从内部线程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

在类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, 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);
   }
}

你说“不进入方法”是什么意思?你是怎么确定的?你真的在启动线程吗?只要调用
方法
就可以了,除非你需要消除歧义。这个问题目前的形式还不够清楚-请提供一个例子。给定的代码是否编译过?我发现至少有两个问题:大写不一致和大括号缺失。请向我们提供一些代码,这些代码实际上说明了您的问题,并且不会人为地引入不相关的问题。@代码专家更不用说未分类和定义的参数以及缺少的空格了。输入方法()工作正常,输出有问题,所以我认为它没有输入该方法。我的错。