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

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

public class Test {
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start();
}
}
class MyThread extends Thread{
private static int num = 0;
public MyThread(){
num++;
}
@Override
public void run() {
System.out.println("主动创建的第"+num+"个线程");
}
}

定时器TimeTask试试

for(iterator : iterator.hasNext();){
new 一个线程来执行你这里面的代码。
}
for循环中的代码放入线程中执行,每一次循环,创建一个新的线程。

首先把转换文件的代码封装成一个类或者方法;
然后用定时器或者线程休眠执行;
参考实现:

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

具体参数和返回结果,自己调整
代码未编译,参考一下结构

我可以理解为你想用并发的解决方案吗?每段代码执行的时间一般不在程序里控制cpu会自动切换上线文。
开多线程之后每个线程执行的时间都是不固定的没必要设定多久

可以考虑使用线程池, 或者始终开启固定数量的多个线程. 不同任务在多个线程并发, 一个任务不需要考虑其他任务的执行时间.

创建一个线程任务。这个任务的作用是提交一个具体操作任务(即你的转换动作)到线程池(或者你启一个线程去处理)。然后再用线程池的定时任务机制去触发创建任务。这样就能达到每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);// 周期提交