首页 > 编程语言 > 详细

如何创建多线程

时间:2020-07-25 20:57:15      阅读:80      评论:0      收藏:0      [点我收藏+]

1.继承 Thread类,并重写run()方法:

public class Thread001 extends Thread{
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName()+"我是子线程");
    }

    public static void main(String[] args) {
        System.out.println(Thread.currentThread().getName()+"我是主线程");
        new Thread001().start();
    }
}

 

2.实现Runnable接口,并重写run()方法:

public class Thread002 implements Runnable{
    public void run() {
        System.out.println(Thread.currentThread().getName()+"我是子线程1");
    }

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

 

3.使用内部类:

public class Thread0022{
    public static void main(String[] args) {
        //写法1
        new Thread(new Runnable() {
            public void run() {
                System.out.println(Thread.currentThread().getName()+"我是子线程1");
            }
        }).start();
        //写法二:使用lambda表达式
        new Thread(() -> System.out.println(Thread.currentThread().getName()+"我是子线程2")).start();
    }
}

 

4.可以带返回结果的线程Callable:

但是这种方式的话因为要等待子线程返回结果,所以你它的用时跟直接一个方法走没啥区别。

public class MyCallback implements Callable<String> {
    @Override
    public String call() throws Exception {
        try{
            Thread.sleep(3000);
        }catch (Exception e){}
        return "子线程返回了!";
    }

    public static void main(String[] args) throws ExecutionException, InterruptedException {
        System.out.println("主线程开始了!");
        FutureTask<String> futureTask = new FutureTask<>(new MyCallback());
        new Thread(futureTask).start();
        System.out.println("这是---》》》"+futureTask.get());
        System.out.println("主线程结束了!");
    }
}

技术分享图片

 

5.线程池:

public class Thread003 {
    public static void main(String[] args) {
        ExecutorService executorService = Executors.newCachedThreadPool();
        executorService.execute(new Runnable() {
            @Override
            public void run() {
                System.out.println("我是"+Thread.currentThread().getName()+"线程池1");
            }
        });
        //写法2:使用lambda表达式
        executorService.execute(() -> System.out.println("我是"+Thread.currentThread().getName()+"线程池2"));
    }
}

 

如何创建多线程

原文:https://www.cnblogs.com/LinTianwen/p/13376646.html

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