3

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

しかし、問題は、neverEndingFunction でスタックしているため、「Hello」が表示されないことです。

どうすればこれを解決できますか?

4

2 に答える 2

12

Thread#run ではなく Thread #start()メソッドを使用してスレッドを開始します。

コードを以下に変更します。

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

Thread#start()

このスレッドに実行を開始させます。Java 仮想マシンは、このスレッドの run メソッドを呼び出します。

Javaでスレッドを開始する方法

于 2013-06-26T09:40:42.247 に答える
3

run メソッドを自分で呼び出すことは想定されていません。JVMにお任せください。start() メソッドを使用して run メソッドを呼び出します。コードはスレッドを作成していません。代わりに、シーケンシャル プログラムです。

于 2013-06-26T09:42:06.023 に答える