我有一个预定的方法调用,它在预定的时间调用以下方法:
private void doSomething(Map<String, String> someArguments) throws CustomException {
MyEnum runType = getRunType(someArguments);
switch (runType) {
case FRUIT:
new FruitClass().workNow();
break;
case VEGETABLE:
new VegetableClass().workNow();
break;
default:
// log that the type is not known
}
}
的方法签名workNow是这样的:
workNow() throws CustomException
workNow方法运行几分钟并做一些工作。我的问题是,当一个workNowfor FRUIT(or VEGETABLE) 正在进行并且另一个调用发生在相同类型(FRUIT例如)时,它会创建一个新FruitClass实例并开始workNow并行执行它。
我如何控制这种行为?我希望通过第二个对象的第二次调用等到第一个workNow到第一个对象未完成。
澄清:
并行调用FRUIT和VEGETABLE很好。我想控制相同类型的并行调用。两个以上FRUIT或两个以上VEGETABLE。
我不能FruitClass和VegetableClass单身人士一样。我需要一些包装代码来new按照我想要的方式工作。
PIPIONE
潇湘沐
慕标5832272
相关分类