我创建了一个线程
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();
}
}
但是股票线程的start()方法显示为“无法解析符号”。
我不知道该怪什么。这应该是一种可访问的方法,因为我已经实现了runnable no?
答案 0 :(得分:1)
使用线程类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();
使用第一种方法的优点是可运行类仍然可以扩展。
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。
答案 1 :(得分:0)
澄清一下:您的StockThread正在实现Runnable而不是扩展Thread。
Runnable没有启动方法。
您可以将StockThread重命名为StockRunnable并使用run。
这将编译,但可能不会产生预期的结果。
如果您希望发生多线程,则调用run方法将不起作用(因为它将在当前线程中运行可运行对象)。
您可以调用new Thread(runnable).start(),这将导致runnable.run()在另一个线程中发生。 (其中runnable应该是StockRunnable的实例)。
您可能希望保留创建的线程的实例,以便以后测试其状态(例如,等待线程完成运行)。
祝你好运!