首页 > 编程语言 > 详细

创建线程的四种方式

时间:2020-05-13 19:15:12      阅读:46      评论:0      收藏:0      [点我收藏+]

一、继承Thread类型

步骤:

  1. 定义一个Thread类的子类,重写run方法,将相关逻辑实现,run()方法就是线程要执行的业务逻辑方法
  2. 创建自定义的线程子类对象
  3. 调用子类实例的star()方法来启动线程
public class Test5 {
    public static void main(String[] args) {
       MyThread t1=new MyThread();
       t1.start();
        System.out.println(Thread.currentThread().getName()+"执行完成。");
    }
}
class MyThread extends Thread{
    @Override
    public void run(){
        System.out.println(Thread.currentThread().getName()+"执行中。。。");
    }
}

二、实现Runnable接口

步骤

  1. 定义Runnable接口实现类MyRunnable,并重写run()方法
  2. 创建MyRunnable实例myRunnable,以myRunnable作为target创建Thead对象,该Thread对象才是真正的线程对象
  3. 调用线程对象的start()方法
/**
 * @description: Runnable接口有@FunctionalInterface,可以通过lamada创建
 * @author: mufeng
 * @create: 2020/5/13 17:20
 */
public class Test6 {
    public static void main(String[] args) {
        Thread t1=new Thread(()->{
            System.out.println(Thread.currentThread().getName()+"执行中");
        });
        t1.start();
        System.out.println(Thread.currentThread().getName()+"执行完成。");
    }
}

三、使用Callable和Future创建线程

步骤

  1. 创建实现Callable接口的类myCallable
  2. 以myCallable为参数创建FutureTask对象
  3. 将FutureTask作为参数创建Thread对象
  4. 调用线程对象的start()方法
/**
 * @description: Callable接口有@FunctionalInterface,可以通过lamada创建
 * @author: mufeng
 * @create: 2020/5/13 17:25
 */
public class Test7 {
    public static void main(String[] args) {
        FutureTask<Integer> futureTask=new FutureTask(()->{
            System.out.println(Thread.currentThread().getName()+"执行中");
            return 1;
        });
        Thread t1=new Thread(futureTask);
        t1.start();
        try {
            System.out.println(Thread.currentThread().getName()+"结束:"+futureTask.get());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

四、使用Executor框架创建线程池

Executors提供了一系列工厂方法用于创先线程池,返回的线程池都实现了ExecutorService接口。

主要有newFixedThreadPool,newCachedThreadPool,newSingleThreadExecutor,newScheduledThreadPool

public class Test8 {
    public static void main(String[] args) {
        ExecutorService executorService = Executors.newSingleThreadExecutor();
        for(int i=0;i<5;i++){
            executorService.execute(()->{
                System.out.println(Thread.currentThread().getName()+"执行中");
            });
        }
        System.out.println("线程任务开始执行");
        executorService.shutdown();
    }
}

 

创建线程的四种方式

原文:https://www.cnblogs.com/mufeng07/p/12884003.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!