2013-06-26 77 views
3

有一個永無止境的功能我有一個MyThread的類主題卡,因爲運行

注:我使用Log.d顯示文本(安卓)

public class MyThread extends Thread { 
    public MyThread() { 
     Log.d(logtag,"init"); 
    } 

    @Override 
    public void run() { 
     Log.d(logtag,"run"); 

     neverEndingFunction(); 

    @Override 
    public void interrupt() { 
     super.interrupt(); 

     stopNeverEndingFunction(); 

    } 

在我的主,我只是沒有

my_thread = new MyThread(); 
my_thread.run();  
Log.d(logtag,"Hello"); 

但問題是我的「你好」是永遠不會顯示,因爲它卡在neverEndingFunction。

我該如何解決這個問題?

回答

12

你啓動一個線程使用Thread#start()方法不是線程#運行

更改您的代碼如下:

my_thread = new MyThread(); 
my_thread.start(); 

Thread#start()

使該線程開始執行; Java虛擬機調用 這個線程的運行方法。

How To Start a thread in java

+0

是的,現在它的工作,謝謝! –

+0

@StreamMajor我推薦看看http://docs.oracle.com/javase/tutorial/essential/concurrency/runthread.html – PermGenError

+0

當然是的:) –

3

你不應該自己調用run方法。將其留給JVM。使用start()方法調用你的run方法。你的代碼不是創建一個線程,而是它的一個順序程序