我正在研究数据包嗅探器,但我在停止包含阻塞方法的线程(不推荐使用的方法)的方式上遇到了麻烦。
相关方法是loop()
来自 pcap4j 库的方法。由于它是一种阻塞方法,因此我将其放入一个线程中以保持主线程正常工作。但是,为了对 pcap 接口应用过滤器,我必须中断循环并重新启动它,因为breakloop()
库的函数返回一个InterruptedException
. 所以我的想法是杀死包含该方法的线程。但是由于我无法进入导致方法阻塞的库循环,我无法通过检查线程是否被中断来做到这一点。
Thread t = new Thread(new Runnable() {
@Override
public void run() {
loop(args);
}
});
t.start();
我怎样才能阻止它?
编辑:我所做的是从源代码重新编译库,从 PcapHandle 类中删除 InterruptedException。