2

我想ThreadPoolExecutor用这段代码实例化一个新的java:

public class ImageList {
    private LinkedBlockingQueue<Image> list;
    private final ThreadPoolExecutor executor;

    public ImageList() {
        executor = new ThreadPoolExecutor(2, 4, 100, TimeUnit.SECONDS, list);
    }
}

哪里Image有以下标题:

public class Image implements Runnable, Serializable

BlockingQueue<Runnable>但是,Java 抱怨找不到该类型的构造函数。我究竟做错了什么?

4

1 回答 1

4

构造函数需要一个BlockingQueue<Runnable>. 你把它传给BlockingQueue<Image>.

ABlockingQueue<Image>不是BlockingQueue<Runnable>. 实际上,您可以将任何类型的 Runnable 存储在 a 中BlockingQueue<Runnable>,但您只能将Image实例存储在 a 中BlockingQueue<Image>

如果是,您可以执行以下操作:

BlockingQueue<Image> list = new BlockingQueue<Image>();
BlockingQueue<Runnable> list2 = list1;
list2.add(new Runnable() {...});

和繁荣!您BlockingQueue<Image>将包含除Image.

于 2012-07-13T14:55:00.897 回答