找不到Thread.start

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了找不到Thread.start相关的知识,希望对你有一定的参考价值。

我有一个我创建的主题

List<String> list_of_stocks = Arrays.asList("AAPL", "NFLX");
StockThread stockthread = new StockThread(list_of_stocks);
stockthread.start();

而thisStockThread定义为:

public class StockThread implements Runnable {

List<String> list_of_stocks;

public StockThread(List<String> list_of_stocks){
    this.list_of_stocks = list_of_stocks;
}
@Override
public void run() {
        /*  So this thread simply has a */
        StockObserver so = new StockObserver(this.list_of_stocks, 1);

        so.getStockPrices();
 }
}

但是stockthread的start()方法显示为“无法解析符号”。

我不明白应该责备什么。这应该是一个可访问的方法,因为我实现了runnable no?

答案

使用线程类StockThread创建线程并启动它们的正确方法是使用以下方法之一 - 示例:

可以使用两种不同的方式定义和启动线程:

  1. 实现Runnable接口
  2. 扩展Thread

1.实现Runnable:

Public class MyRunnable implements Runnable {

    @Override
    public void run() {
        // code to execude in the thread
    }
}

实例化并启动线程(其中两个):

MyRunnable runnable = new MyRunnable();
Thread myThread1 = new Thread(runnable);
myThread1.start();
Thread myThread2 = new Thread(runnable);
myThread2.start();

使用第一种方法的优点是仍然可以扩展runnable类。

2.扩展Thread类:

public class MyThread extends Thread {

    @Override
    public void run() {
        // code to execude in the thread
    }
}

实例化并启动线程:

MyThread myThread1 = new MyThread();
myThread1.start();
MyThread myThread2 = new MyThread();
myThread2.start();

请注意,任何线程只能启动一次。 链接到API java.lang.ThreadRunnable

另一答案

澄清一下:您的StockThread正在实现Runnable而不是扩展Thread。

Runnable没有start方法。

您可以将StockThread重命名为StockRunnable并使用run。

这将编译但可能不会产生预期的结果。

如果要进行多线程,则调用run方法将不起作用(因为它将在当前线程中运行runnable)。

您可以调用新的Thread(runnable).start(),这将导致runnable.run()发生在另一个线程中。 (其中runnable应该是StockRunnable的一个实例)。

您可能希望保留您创建的线程的实例以便稍后测试其状态(例如,等待它完成运行)。

祝好运!

以上是关于找不到Thread.start的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin 在片段中找不到按钮 ID,为啥?

调用 onCreateView() 之前出现“找不到片段 id 的视图”错误

找不到用于片段的id 0x7f0800c4的视图

Kotlin:找不到符号类片段或其他 android 类

Android 片段,在 TabHost 中找不到 id 的视图

添加两个窗格的平板电脑布局会导致在移动设备中找不到视图(小于w600dp)