java在方法中不管程序有没有执行完,开启新线程

有一个文件转换的程序,转换大的word文档比较慢,1分钟之后,不管有没有转换完成,开启一个新线程,开始转换下一个文件,应该怎么写。

https://img1.mukewang.com/5b5973650001940810090577.jpg

阿晨1998
浏览 1101回答 2
2回答

泛舟湖上清波郎朗

首先把转换文件的代码封装成一个类或者方法;然后用定时器或者线程休眠执行;参考实现: 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);  }  }具体参数和返回结果,自己调整代码未编译,参考一下结构

慕仙森

创建一个线程任务。这个任务的作用是提交一个具体操作任务(即你的转换动作)到线程池(或者你启一个线程去处理)。然后再用线程池的定时任务机制去触发创建任务。这样就能达到每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);// 周期提交
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java