1

我正在使用线程,需要首先从集合中检索一个对象,然后在该对象中执行该方法。我使用 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);
    }
}

}

4

1 回答 1

2

当您的队列为空时,您可以运行:

new Thread(requestQueue.get(0)).start();

顺便说一句:你应该得到一个循环名称冲突,表明你不能扩展Thread. 您可以将类重命名为MyThread.

还可以查看ExecutorService作为一种抽象与原始线程等较低级别抽象相关的许多复杂性的方法。

于 2012-11-07T01:14:42.043 回答