为了账号安全,请及时绑定邮箱和手机立即绑定

未找到 Thread.start

未找到 Thread.start

MYYA 2022-06-04 14:53:59
我有一个我创建的线程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;}@Overridepublic void run() {        /*  So this thread simply has a */        StockObserver so = new StockObserver(this.list_of_stocks, 1);        so.getStockPrices(); }}但是 stockthread 的 start() 方法显示为“无法解析符号”。我不明白这是什么罪过。这应该是一种可访问的方法,因为我已经实现了 runnable no?
查看完整描述

2 回答

?
哔哔one

TA贡献1854条经验 获得超8个赞

创建线程并使用线程类启动它们的正确方法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();

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


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.Thread和Runnable的链接。


查看完整回答
反对 回复 2022-06-04
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

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

Runnable 没有启动方法。

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

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

如果您希望发生多线程,则调用 run 方法将不起作用(因为它将在当前线程中运行可运行对象)。

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

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

祝你好运!


查看完整回答
反对 回复 2022-06-04
  • 2 回答
  • 0 关注
  • 91 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信