android中的多线程警告

时间:2016-03-28 13:11:39

标签: java android multithreading

我遇到多线程问题。警告是:“MenuThread类型的方法start()未定义”。我该怎么办

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

   }
   else if (whichMethodToCall == 2) {

   }
}

3 个答案:

答案 0 :(得分:4)

MenuThread正在实施Runnable界面。它不是一个线程。如果它在另一个线程上运行,则将MyThread的实例传递给Thread对象

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

答案 1 :(得分:0)

使用new Thread(thread).start()

答案 2 :(得分:0)

有问题的代码:

MenuThread thread = new MenuThread(i);

以上行创建MenuThread,实现Runnable接口。仍然不是一个线程,因此

thread.start();是非法的。

Runnable实例

创建线程的正确方法
MenuThread thread = new MenuThread(i);
(new Thread(thread)).start();

您可以通过两种不同的方式创建线程。查看有关thread creation

的oracle文档
  

创建Thread实例的应用程序必须提供将在该线程中运行的代码。有两种方法可以做到这一点:

  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,提供自己的run

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