2013-12-20 60 views
3

我剛開始學習java,遇到涉及線程的輕微路塊。我有一個靜態方法,我想在自己的線程中運行,這可能嗎?在Python中,我知道它看起來像這樣: import thread;thread.start_new_thread(my_function,()); 而且我知道如何通過實現Runnable或擴展線程來使用非靜態方法的線程,但這不是我想要做的。Java在新線程中運行靜態方法

+1

實現'Runnable'並不意味着你不能在你的'Runnable'中調用靜態方法。只需創建一個實現了'Runnable'的匿名類並在'run'方法中調用靜態方法。 –

+1

對不起,我是java新手,你能舉個例子嗎? – 735Tesla

回答

8

有一個Threadrun方法調用static方法:

new Thread(new Runnable() { 
    public void run() { 
     Call.yourStaticMethod(); 
    } 
}).start(); 
2

以上將創建一個Static Method在另一Thread執行:

public static void yourStaticMethod() { 
    new Thread(new Runnable(){ 
     // This happens inside a different Thread 
    }).start(); 
} 
+0

每當調用靜態方法時,這不會創建一個新的Thread嗎? – emory

+0

Yeap,因爲一個線程不能多於一次啓動。 – everton

2

你需要創建一個新的線程。 (據我瞭解)

Thread t = new Thread(){ 
@Override 
public void run(){ 
method(); 
} 
static void method(){// do stuff 
} 
} 
//finally 
t.start(); 

您可以隨時在方法內創建一個類並將更多參數傳遞給該線程。

你不需要用線程換行Runnable。使用任何你喜歡的,這是同樣的事情!

該方法是靜態的這一事實在這裏並不重要。

如果靜態方法確實只使用局部變量,沒有對象字段或方法,那麼它是線程安全的。如果它訪問任何對象字段或方法,則它可能不是線程安全的,這取決於在其他代碼中使用那些字段或方法的內容。

您可以在靜態方法或其他內容中創建新線程。這取決於你想要做什麼。