我有一个对我来说很奇怪的枚举。

enum PoolType {

    FIXED(4),
    CACHED,
    SINGLE;

    private int threadsAmount;

    private PoolType(int threadsAmount) {
        this.threadsAmount = threadsAmount;
    }

    private PoolType() {
    }

    public int getThreadsAmount() {
        return threadsAmount;
    }

    public PoolType withThreads(int threadsAmount) {
        this.threadsAmount = threadsAmount;
        return this;
    }
}


其实我想知道设计是否可以,还是有些错误?

聚苯乙烯

我以这种方式使用它

new ExecutionStarter(PoolType.CACHED.withThreads(5));

最佳答案

如果需要修改线程数,则需要两个类。

可以配置其线程的Pool,以及可以是枚举的PoolType。

由于枚举仅提供类型处理,因此最好通过枚举模式放弃类型委托。而是直接使用Java类型系统

public interface Pool ...
public class FixedPool implements Pool ...
... etc ...


这样,您可以拥有两个不同线程大小的固定池。

10-08 18:35