重复启动同一个线程类

时间:2022-07-16 16:22:23
如果快速反复启动同一个线程类,这个线程类的功能是使用ProcessBuilder类调用外部命令。
而外部命令的功能是将xsl转换成pdf,
那么有没有可能有的pdf生成不出来?或者说线程阻塞?数据丢失?

9 个解决方案

#1


多线程的操作,要考虑阻塞

#2


怎么防止阻塞呢?试了网上说的清空缓冲区不好用

#3


如果ProcessBuilder调用外部类已经执行了外部命令的话,我感觉应该没问题。
把这件事分成两段
一段是调用命令,调用命令之后应该和java就不搭界了。
调用之前,线程也许会出现点问题,但是个人感觉造成的影响无非是外部命令不执行或者快速两次执行。

#4


引用 3 楼 AA5279AA 的回复:
如果ProcessBuilder调用外部类已经执行了外部命令的话,我感觉应该没问题。
把这件事分成两段
一段是调用命令,调用命令之后应该和java就不搭界了。
调用之前,线程也许会出现点问题,但是个人感觉造成的影响无非是外部命令不执行或者快速两次执行。


外部命令执行的时候会产生log文件,我看log都生成了,log里也没有错误信息,感觉是pdf转换成功了,但是没输出来。。。。
还有就是,必须快速的调用10次8次的,才会随机有1,2次pdf文件没出来。要是只有一次两次的,或者隔几秒调用一次也不会有问题。

你觉得会是哪里的问题呢

#5


引用 4 楼 feier00 的回复:
Quote: 引用 3 楼 AA5279AA 的回复:

如果ProcessBuilder调用外部类已经执行了外部命令的话,我感觉应该没问题。
把这件事分成两段
一段是调用命令,调用命令之后应该和java就不搭界了。
调用之前,线程也许会出现点问题,但是个人感觉造成的影响无非是外部命令不执行或者快速两次执行。


外部命令执行的时候会产生log文件,我看log都生成了,log里也没有错误信息,感觉是pdf转换成功了,但是没输出来。。。。
还有就是,必须快速的调用10次8次的,才会随机有1,2次pdf文件没出来。要是只有一次两次的,或者隔几秒调用一次也不会有问题。

你觉得会是哪里的问题呢

我觉得是xls转换成pdf那个软件的问题,不是java的问题。。
可以的话写一个bat文件,也模拟一下1秒钟执行十几次转换,我估计也会出问题。

#6


可能你的数据还没执行完线程切换了。sleep 时间长点试试。

#7


引用 6 楼 rui888 的回复:
可能你的数据还没执行完线程切换了。sleep 时间长点试试。


sleep我试了,确实好用。不过不知道原因。
每个线程输出的pdf放在不同的文件夹里,即使切换了,别的线程执行完了不是也得回过头来执行当前这个吗。。。。。为什么会出现pdf输出不了的问题呢

#8


引用 6 楼 rui888 的回复:
可能你的数据还没执行完线程切换了。sleep 时间长点试试。

再说,要用sleep的话还不如调用的时候不要那么急。。。。。
但是现在就是要求很急的情况下,也能正常

#9


怀疑是的线程数据没有写完切换到另一个了。多个线程间要利用好wait notify 和  同步。你网上搜搜这些实例。

#1


多线程的操作,要考虑阻塞

#2


怎么防止阻塞呢?试了网上说的清空缓冲区不好用

#3


如果ProcessBuilder调用外部类已经执行了外部命令的话,我感觉应该没问题。
把这件事分成两段
一段是调用命令,调用命令之后应该和java就不搭界了。
调用之前,线程也许会出现点问题,但是个人感觉造成的影响无非是外部命令不执行或者快速两次执行。

#4


引用 3 楼 AA5279AA 的回复:
如果ProcessBuilder调用外部类已经执行了外部命令的话,我感觉应该没问题。
把这件事分成两段
一段是调用命令,调用命令之后应该和java就不搭界了。
调用之前,线程也许会出现点问题,但是个人感觉造成的影响无非是外部命令不执行或者快速两次执行。


外部命令执行的时候会产生log文件,我看log都生成了,log里也没有错误信息,感觉是pdf转换成功了,但是没输出来。。。。
还有就是,必须快速的调用10次8次的,才会随机有1,2次pdf文件没出来。要是只有一次两次的,或者隔几秒调用一次也不会有问题。

你觉得会是哪里的问题呢

#5


引用 4 楼 feier00 的回复:
Quote: 引用 3 楼 AA5279AA 的回复:

如果ProcessBuilder调用外部类已经执行了外部命令的话,我感觉应该没问题。
把这件事分成两段
一段是调用命令,调用命令之后应该和java就不搭界了。
调用之前,线程也许会出现点问题,但是个人感觉造成的影响无非是外部命令不执行或者快速两次执行。


外部命令执行的时候会产生log文件,我看log都生成了,log里也没有错误信息,感觉是pdf转换成功了,但是没输出来。。。。
还有就是,必须快速的调用10次8次的,才会随机有1,2次pdf文件没出来。要是只有一次两次的,或者隔几秒调用一次也不会有问题。

你觉得会是哪里的问题呢

我觉得是xls转换成pdf那个软件的问题,不是java的问题。。
可以的话写一个bat文件,也模拟一下1秒钟执行十几次转换,我估计也会出问题。

#6


可能你的数据还没执行完线程切换了。sleep 时间长点试试。

#7


引用 6 楼 rui888 的回复:
可能你的数据还没执行完线程切换了。sleep 时间长点试试。


sleep我试了,确实好用。不过不知道原因。
每个线程输出的pdf放在不同的文件夹里,即使切换了,别的线程执行完了不是也得回过头来执行当前这个吗。。。。。为什么会出现pdf输出不了的问题呢

#8


引用 6 楼 rui888 的回复:
可能你的数据还没执行完线程切换了。sleep 时间长点试试。

再说,要用sleep的话还不如调用的时候不要那么急。。。。。
但是现在就是要求很急的情况下,也能正常

#9


怀疑是的线程数据没有写完切换到另一个了。多个线程间要利用好wait notify 和  同步。你网上搜搜这些实例。