我正在使用线程,需要首先从集合中检索对象,然后在该对象中执行方法。我使用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作为抽象化许多与较低层抽象(例如原始线程)相关的复杂性的方法。

07-26 03:07