我正在使用线程,需要首先从集合中检索对象,然后在该对象中执行方法。我使用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);
}
}
}
最佳答案
当队列不为空时,可以运行:
new Thread(requestQueue.get(0)).start();
顺便说一句:您应该遇到一个循环名称冲突,表明您不能扩展
Thread
。您可以将类重命名为MyThread
。还可以查看ExecutorService作为抽象化许多与较低层抽象(例如原始线程)相关的复杂性的方法。