我正在使用线程,需要先从集合中检索一个对象,然后在该对象中执行该方法。我使用ArrayList.get(0)来检索第一个元素,但现在我如何为刚刚检索到的Runnable对象执行run()方法?
到目前为止,这是我的代码:
public class MyThread extends Thread{
//Instance Variables
private List<Runnable> requestQueue;
//Constructor
public MyThread() {
requestQueue = new LinkedList<Runnable>();
}
//Methods
public void run() {
while (!requestQueue.isEmpty()) {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
requestQueue.get(0);
}
}
}
答案 0 :(得分:2)
当您排队而非为空时,您可以运行:
new Thread(requestQueue.get(0)).start();
顺便说一句:你应该得到一个循环名称冲突,表明你无法扩展Thread
。您可以将课程重命名为MyThread
。
另请参阅ExecutorService,以抽象出与原始线程等较低级别抽象相关的许多复杂性。