猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
java在方法中不管程序有没有执行完,开启新线程
有一个文件转换的程序,转换大的word文档比较慢,1分钟之后,不管有没有转换完成,开启一个新线程,开始转换下一个文件,应该怎么写。
阿晨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); } }具体参数和返回结果,自己调整代码未编译,参考一下结构
0
0
0
慕仙森
创建一个线程任务。这个任务的作用是提交一个具体操作任务(即你的转换动作)到线程池(或者你启一个线程去处理)。然后再用线程池的定时任务机制去触发创建任务。这样就能达到每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);// 周期提交
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
Java
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续