猿问

未找到 Thread.start

我有一个我创建的线程


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

StockThread stockthread = new StockThread(list_of_stocks);

stockthread.start();

这StockThread被定义为:


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?


MYYA
浏览 92回答 2
2回答

哔哔one

创建线程并使用线程类启动它们的正确方法StockThread是使用以下方法之一 - 示例:可以使用两种不同的方式定义和启动线程:实现Runnable接口扩展Thread类1.实现Runnable:Public class MyRunnable implements Runnable {&nbsp; &nbsp; @Override&nbsp; &nbsp; public void run() {&nbsp; &nbsp; &nbsp; &nbsp; // code to execude in the thread&nbsp; &nbsp; }}实例化并启动线程(其中两个):MyRunnable runnable = new MyRunnable();Thread myThread1 = new Thread(runnable);myThread1.start();Thread myThread2 = new Thread(runnable);myThread2.start();使用第一种方法的优点是仍然可以扩展可运行类。2.扩展Thread类:public class MyThread extends Thread {&nbsp; &nbsp; @Override&nbsp; &nbsp; public void run() {&nbsp; &nbsp; &nbsp; &nbsp; // code to execude in the thread&nbsp; &nbsp; }}实例化并启动线程:MyThread myThread1 = new MyThread();myThread1.start();MyThread myThread2 = new MyThread();myThread2.start();请注意,任何线程只能启动一次。指向 API java.lang.Thread和Runnable的链接。

qq_笑_17

澄清一下:您的 StockThread 正在实现 Runnable 而不是扩展 Thread。Runnable 没有启动方法。您可以将 StockThread 重命名为 StockRunnable 并使用 run。这将编译但可能不会产生预期的结果。如果您希望发生多线程,则调用 run 方法将不起作用(因为它将在当前线程中运行可运行对象)。您可以调用 new Thread(runnable).start() ,这将导致 runnable.run() 在不同的线程中发生。(runnable 应该是 StockRunnable 的一个实例)。您可能希望保留您创建的线程实例,以便稍后测试其状态(例如,等待它完成运行)。祝你好运!
随时随地看视频慕课网APP

相关分类

Java
我要回答