Epson PosPrinter(TM-T70)在连接尝试时不断创建线程

时间:2015-03-04 07:37:02

标签: java epson

我正在尝试使用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()引起的;创造了这个线程。
就个人而言,我现在处于另一个问题......我需要考虑这个问题是否仍然相关。

1 个答案:

答案 0 :(得分:0)

如果有人知道如何摆脱线程(而不是阻止它们),请回答:)。

对于实际问题:事实证明,通过调用新的POSPrinter(),正在创建一个线程,并且无论PosPrinter-Object是否仍然被引用,它都会保持活动状态(尽管等待)。

解决方案(目前)似乎是确保构造函数只被调用一次,并执行所有操作以重新连接,断开连接等一个对象。
(无论如何,这对我来说似乎更清晰。)