线程卡住,因为在运行中具有永不停止的功能

时间:2013-06-26 09:39:25

标签: java multithreading

我有一个myThread类

注意:我正在使用Log.d来显示文本(Android)

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");  

但问题是我的“Hello”永远不会显示,因为它卡在neverEndingFunction中。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:12)

使用Thread#start()方法而非线程#运行启动线程。

将您的代码更改为以下内容:

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

Thread#start()

  

使该线程开始执行; Java虚拟机调用   这个线程的run方法。

How To Start a thread in java

答案 1 :(得分:3)

您不应该自己调用run方法。把它留给JVM。使用start()方法调用run方法。您的代码不是创建线程,而是创建顺序程序