找不到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
创建线程并启动它们的正确方法是使用以下方法之一 - 示例:
可以使用两种不同的方式定义和启动线程:
- 实现
Runnable
接口 - 扩展
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.Thread和Runnable。
澄清一下:您的StockThread正在实现Runnable而不是扩展Thread。
Runnable没有start方法。
您可以将StockThread重命名为StockRunnable并使用run。
这将编译但可能不会产生预期的结果。
如果要进行多线程,则调用run方法将不起作用(因为它将在当前线程中运行runnable)。
您可以调用新的Thread(runnable).start(),这将导致runnable.run()发生在另一个线程中。 (其中runnable应该是StockRunnable的一个实例)。
您可能希望保留您创建的线程的实例以便稍后测试其状态(例如,等待它完成运行)。
祝好运!
以上是关于找不到Thread.start的主要内容,如果未能解决你的问题,请参考以下文章
调用 onCreateView() 之前出现“找不到片段 id 的视图”错误