有一個文件轉換的程序,轉換大的word文檔比較慢,1分鐘之后,不管有沒有轉換完成,開啟一個新線程,開始轉換下一個文件,應該怎么寫。
2 回答

泛舟湖上清波郎朗
TA貢獻1818條經驗 獲得超3個贊
首先把轉換文件的代碼封裝成一個類或者方法;
然后用定時器或者線程休眠執(zhí)行;
參考實現(xiàn):
public void transform(File file){ //轉換文件 } public void execute(File[] files){ for(File file: files){ new Thread(){ public void run(){ transform(file); } }.start(); Thread.sleep(1000*60); } }
具體參數(shù)和返回結果,自己調整
代碼未編譯,參考一下結構

慕仙森
TA貢獻1827條經驗 獲得超8個贊
創(chuàng)建一個線程任務。這個任務的作用是提交一個具體操作任務(即你的轉換動作)到線程池(或者你啟一個線程去處理)。然后再用線程池的定時任務機制去觸發(fā)創(chuàng)建任務。這樣就能達到每1分鐘創(chuàng)建一個轉換任務且不受轉換進度影響的目的了。
final ScheduledExecutorService service = Executors.newScheduledThreadPool(10); // 線程池 // 轉換任務 final Runnable convertRun = new Runnable() { @Override public void run() { // 具體的轉換代碼 } }; // 提交任務 Runnable createRun = new Runnable() { @Override public void run() { service.submit(convertRun); // 或者 new Thread(convertRun).start();// 不推薦這種 } }; // 這個方法更適合你的需求。但是如果用scheduleWithFixedDelay也是可以的。因為提交一個線程并不會花費多少時間 service.scheduleAtFixedRate(createRun, 0, 1, TimeUnit.MINUTES);// 周期提交
添加回答
舉報
0/150
提交
取消