×

线程

《线程系列》一、创建线程的四种方式

我的笔记 我的笔记 发表于2020-11-24 12:49:11 浏览3896 评论0

抢沙发发表评论

方式一、继承Thread类

package com.fyd;

public class Test01 {
    public static void main(String[] args) {
        new Thread001().start();
    }
}

class Thread001 extends Thread {
    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println(i);
        }
    }
}

方式二、实现Runnable接口

package com.fyd;

public class Test02 {
    public static void main(String[] args) {
        new Thread(new Thread002()).start();
    }
}

class Thread002 implements Runnable {
    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println(i);
        }
    }

}

方式三、实现Callable

package com.fyd;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

public class Test03 {
    public static void main(String[] args) {
        try {
            FutureTask futureTask=new FutureTask(new Thread003());
            futureTask.run();
            System.out.println(futureTask.get());
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
    }
}

class Thread003 implements Callable {
    @Override
    public Object call() throws Exception {
        int j=100;
        for (int i = 0; i < 10; i++) {
            System.out.println(i);
        }
        return j;
    }
}

方法四、使用线程池

package com.fyd;


import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Test04 {
    public static void main(String[] args) {
        //创建一个定长的线程池
        ExecutorService executorService = Executors.newFixedThreadPool(5);

        //创建一个可以缓存的线程池会回收线程,如果没有可回收,就创建
        ExecutorService executorService1 = Executors.newCachedThreadPool();

        //创建一个单线程的线程池
        ExecutorService executorService3 = Executors.newSingleThreadScheduledExecutor();

        //创建一个线程池,该线程池可以调度在给定延迟之后运行的命令,或者定期执行命令。
        ExecutorService executorService4 = Executors.newScheduledThreadPool(5);
    }
}


我的笔记博客版权我的笔记博客版权