java创建线程

创建线程的三种常见方法

方法一
继承Thread类

/**
 * 继承Thread类
 */
@Slf4j
public class BuildThread1 extends Thread{
    @Override
    public void run() {
        log.debug("running");
    }

    public static void main(String[] args) {
        BuildThread1 buildThread1 = new BuildThread1();
        buildThread1.setName("继承Thread类创建的线程");
        buildThread1.start();
    }
}

结果
2021-02-09 16:07:04.090 [继承Thread类创建的线程] DEBUG com.xc.thread.BuildThread1 - running

也直接new一个 Thread

@Slf4j(topic = "method01")
public class BuildThread01 {
    public static void main(String[] args) {
        Thread thread = new Thread(){
            @Override
            public void run() {
                log.debug("running");
            }
        };
        thread.setName("直接使用thread创建线程");
        thread.start();
    }
}

结果
2021-02-09 16:08:50.892 [直接使用thread创建线程] DEBUG method01 - running
方法二
实现Runnable接口

/**
 * 实现Runnable接口
 */
@Slf4j
public class BuildThread2 implements Runnable{
    @Override
    public void run() {
        log.debug("running");
    }

    public static void main(String[] args) {
        BuildThread2 buildThread2 = new BuildThread2();
        Thread thread = new Thread(buildThread2);
        thread.setName("实现Runnable接口创建的线程");
        thread.start();
    }
}

结果
2021-02-09 16:11:11.753 [实现Runnable接口创建的线程] DEBUG com.xc.runnable.BuildThread2 - running

也可以这样写

@Slf4j(topic = "method02")
public class BuildThread02 {
    public static void main(String[] args) {
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                log.debug("running");
            }
        };
        Thread thread = new Thread(runnable);
        thread.setName("runnable配合thread创建线程");
        thread.start();
    }
}

结果
2021-02-09 16:11:34.245 [runnable配合thread创建线程] DEBUG method02 - running
方法三
实现callable接口

/**
 * 实现callable接口
 */
@Slf4j
public class BuildThread3 implements Callable<String> {
    @Override
    public String call() throws Exception {
        log.debug("running");
        return "ok";
    }

    public static void main(String[] args) throws ExecutionException, InterruptedException {
        BuildThread3 buildThread3 = new BuildThread3();
        //创建服务
        ExecutorService service = Executors.newFixedThreadPool(1);
        //提交执行
        Future<String> task = service.submit(buildThread3);
        log.debug("{}",task.get());
        //关闭服务
        service.shutdownNow();
    }
}

结果
2021-02-09 16:16:27.380 [pool-2-thread-1] DEBUG com.xc.callable.BuildThread3 - running
2021-02-09 16:16:27.382 [main] DEBUG com.xc.callable.BuildThread3 - ok

也可以FutureTask配合Thread创建线程,因为FutureTask能够接收Callable类型的参数

@Slf4j(topic = "method03")
public class BulidThread03 {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        FutureTask<String> task = new FutureTask<String>(new Callable<String>() {
            @Override
            public String call() throws Exception {
                log.debug("running");
                Thread.sleep(2000);
                return "ok";
            }
        });
        Thread thread = new Thread(task, "FutureTask配合Thread创建线程");
        thread.start();
        log.debug("{}", task.get());
    }
}

结果
2021-02-09 16:14:47.676 [FutureTask配合Thread创建线程] DEBUG method03 - running
2021-02-09 16:14:49.678 [main] DEBUG method03 - ok

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值