打印机竞争条件?

时间:2015-09-28 18:45:59

标签: java printing

所以我有一些我正在修改的代码。如果不详细了解它实际上在做什么,可以通过创建文件然后将其发送到打印机来进行总结。基本上如下:

File file = new File("/tmp/12345.pdf");
//Lots of magical code that creates/writes to said file
...
...
...
//sendToPrinter essentially builds up a print command to send to /usr/bin/lp and then executes it.
sendToPrinter(printer, details, file);

file.delete();// This is the line I'm curious about.

我的问题是在转到file.delete()之前调用lp。但是,这是否存在创建竞争条件的风险,我实际上在打印机准备好之前最终删除了文件?

从初步测试开始,我还没有看到问题,但有些事情困扰着我。这样做我是否创造了竞争条件的风险?

编辑:根据评论澄清。是的,我正在使用lp和sendToPrinter似乎正在等待返回代码。代码不是异步的。

1 个答案:

答案 0 :(得分:0)

来自doc

  

join方法允许一个线程等待完成   另一个。如果t是其当前正在执行其线程的Thread对象,则

     

t.join();导致当前线程暂停执行直到t   线程终止。

http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#join()