2012-10-25 73 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的非靜態方法。您只需要在使該方法線程安全時執行盡職調查。