2012-10-25 72 views
0

即使不创建Runner对象,我是否可以从线程的run方法访问Runner类中的process方法?为什么?Java多线程方法访问

class Runner { 
    public void process() { 
    // some multithreaded code 
    } 
} 

main() { 
Thread t1 = new Thread(new Runnable() { 
       public void run() { 
        process(); 
       } 
      }); 
t1.start();   
} 
+0

你不能。你为什么不想创建一个Runner对象的任何原因? – Vikdor

+0

我不认为我们“访问”方法,并且声明对我没有意义,而是我们访问对象。 –

+0

main()是什么类?为什么它没有参数?评论“多线程代码”是什么意思? – eboix

回答

2

可如果你把它static

class Runner { 
     public static void process() { 
     // some multithreaded code 
     } 
    } 

然后:

public static void main() { 
    Thread t1 = new Thread(new Runnable() { 
       public void run() { 
        Runner.process(); 
       } 
      }); 
    t1.start();   
} 

但是,你将无法引用process()方法没有Runner.资格或没有实例。这是因为JavaObject Oriented语言。

0

如果Runner的过程方法是静态的,你可以。

不能实例化访问Object的非静态方法。您只需要在使该方法线程安全时执行尽职调查。