为了账号安全,请及时绑定邮箱和手机立即绑定

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 关注
  • 1100 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号