2016-03-28 9 views
2

マルチスレッドに問題があります。警告: "メソッドstart()は、タイプMenuThread"で定義されていません。どうすればいいですかアンドロイドのマルチスレッド警告

public void run() { 
    if (whichMethodToCall == 1) { 

    } 
    else if (whichMethodToCall == 2) { 

    } 
} 
+0

は、runメソッドを定義し、実行の独自の実装を提供することができますか? –

+0

@blahfunk runメソッドはMenuThreadクラスで定義されています。しかし、上記のコードを含む他のクラスは、start mthodを見ません。どうすればいいですか? – xiac

+1

MenuThreadクラスを定義するコードを投稿してください。 –

答えて

4

MenuThreadはRunnableインターフェイスを実装しています。スレッドではありません。もしそれが別のスレッドで実行する場合はThreadオブジェクト

Thread thread = new Thread(new MenuThread(i)); 
thread.start(); 
0

使用new Thread(thread).start()にMyThreadのインスタンスを渡します。

0

問題のコード:線の上

MenuThread thread = new MenuThread(i); 

Runnableインタフェースを実装するMenuThreadを作成します。それでもスレッドではないので、

thread.start();は不正です。 Runnableインスタンスから

MenuThread thread = new MenuThread(i); 
(new Thread(thread)).start(); 

をスレッドを作成するための

正しい方法あなたは、2つの異なる方法でスレッドを作成することができます。 thread creation

スレッドのインスタンスを作成するアプリケーションは、そのスレッドで実行されるコードを提供する必要があります。

  1. Provide a Runnable object.Runnableインタフェースはスレッドで実行されるコードが含まれていることを意図単一の方法、実行を、定義します。これを行うには二つの方法があります。 The Runnable object is passed to the Thread constructor

    public class HelloRunnable implements Runnable { 
    
        public void run() { 
         System.out.println("Hello from a thread!"); 
        } 
    
        public static void main(String args[]) { 
         (new Thread(new HelloRunnable())).start(); 
        } 
    } 
    
  2. Subclass Thread。 Threadクラス自体はRunnableを実装していますが、runメソッドは何もしません。アプリケーションは、Threadサブクラス

    public class HelloThread extends Thread { 
    
        public void run() { 
         System.out.println("Hello from a thread!"); 
        } 
    
        public static void main(String args[]) { 
         (new HelloThread()).start(); 
        } 
    
    }