我正在尝试使用Epson TM-T70 Pos-Printer。打印工作,但万一打印机脱机,我试图循环重新连接 在我遇到异常之前,在printer-control-object的构造函数中发生以下情况:
private POSPrinterControl19 epsonPrinterControl19;
epsonPrinterControl19 = (POSPrinterControl19) new POSPrinter();
epsonPrinterControl19.open(printerName);
epsonPrinterControl19.claim(0);
在声明时,抛出JPos-Exception,构造函数不构造。在Object上,调用finalize方法:
super.finalize();
epsonPrinterControl19.removeStatusUpdateListener(this);
epsonPrinterControl19 = null;
仍在运行的是一个主题:
"EPSON UPOS Service EventThread.@2472" prio=5 tid=0x14 nid=NA waiting
java.lang.Thread.State: WAITING
at java.lang.Object.wait(Object.java:-1)
at java.lang.Object.wait(Object.java:485)
at jp.co.epson.upos.ServiceEventQueue.peekEvent(Unknown Source:-1)
at jp.co.epson.upos.ServiceEventThread.run(Unknown Source:-1)
我似乎无法摆脱这个线程。因为我在主程序周围重新连接到打印机,所以新的线程不断创建 问题是:我如何摆脱那些线程?
编辑:我实验了一些......似乎问题是由新的POSPrinter()引起的;创造了这个线程。
就个人而言,我现在处于另一个问题......我需要考虑这个问题是否仍然相关。
答案 0 :(得分:0)
如果有人知道如何摆脱线程(而不是阻止它们),请回答:)。
对于实际问题:事实证明,通过调用新的POSPrinter(),正在创建一个线程,并且无论PosPrinter-Object是否仍然被引用,它都会保持活动状态(尽管等待)。
解决方案(目前)似乎是确保构造函数只被调用一次,并执行所有操作以重新连接,断开连接等一个对象。
(无论如何,这对我来说似乎更清晰。)