我有一个智能卡读取器池,可以使用它们来计算数字签名。
该智能卡需要一段时间才能签名,因此我需要设置一个池以将请求排队并尽快处理请求。
这是我使用单个智能卡的方式:
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,因此默认情况下,线程池将针对每个请求尽快执行。