2013-06-26 28 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方法。你的代码不是创建一个线程,而是它的一个顺序程序