亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java在方法中不管程序有沒有執行完,開啟新線程

java在方法中不管程序有沒有執行完,開啟新線程

阿晨1998 2018-07-20 14:26:57
有一個文件轉換的程序,轉換大的word文檔比較慢,1分鐘之后,不管有沒有轉換完成,開啟一個新線程,開始轉換下一個文件,應該怎么寫。
查看完整描述

2 回答

?
泛舟湖上清波郎朗

TA貢獻1818條經驗 獲得超3個贊

首先把轉換文件的代碼封裝成一個類或者方法;
然后用定時器或者線程休眠執行;
參考實現:

 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);
 }
 }

具體參數和返回結果,自己調整
代碼未編譯,參考一下結構

查看完整回答
反對 回復 2018-07-26
?
慕仙森

TA貢獻1827條經驗 獲得超8個贊

創建一個線程任務。這個任務的作用是提交一個具體操作任務(即你的轉換動作)到線程池(或者你啟一個線程去處理)。然后再用線程池的定時任務機制去觸發創建任務。這樣就能達到每1分鐘創建一個轉換任務且不受轉換進度影響的目的了。

 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);// 周期提交


查看完整回答
反對 回復 2018-07-26
  • 2 回答
  • 0 關注
  • 1071 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號