我有一个智能卡读取器池,可以使用它们来计算数字签名。
该智能卡需要一段时间才能签名,因此我需要设置一个池以将请求排队并尽快处理请求。

这是我使用单个智能卡的方式:

try{
   Smartcard smartcard=new Smartcard(slot); //slot: reader number
   smartcard.sign(file);
}catch(SmartcardException e){
   throw e; //unusable smartcard
}


我认为可以使用ExcecutorService来管理多个智能卡,并使用等于智能卡读取器的池大小。
我的疑问是,是否可以使用此对象将单个读取器连接到每个线程,并且是否可以停止单个线程,以防其智能卡出现SmartcardException故障(例如,智能卡已移除或损坏)。

我恢复:


我有一组设备(智能卡读卡器),并且需要一个自动系统来管理其工作队列。
万一发生故障,必须将设备设置为不可用并删除。
我想实现最短的请求等待时间。


ExcecutorService是否合适?

最佳答案

ExecutorService用BlockingQueue支持提交。这些队列显然是FIFO,因此默认情况下,线程池将针对每个请求尽快执行。

07-28 04:35