2.创建线程的方式

创建线程

多线程方式

package com.source.week5;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.*;

public class ThreadMethod {

    //1继承 Thread 方法,并重写 run() 方法
    class IM1 extends Thread {

        @Override
        public void run() {
            System.out.println("im 1 线程id:"+ Thread.currentThread().getId());
        }
    }

    //2实现run 接口
    class IM2 implements Runnable {

        @Override
        public void run() {
            System.out.println("im 2 线程id:"+ Thread.currentThread().getId());
        }
    }

    //3实现 callable,通过FutureTask 执行
    class IM3 implements Callable<Long> {

        @Override
        public Long call() throws Exception {
            System.out.println("im 3 线程id:"+ Thread.currentThread().getId());
            return Thread.currentThread().getId();
        }
    }

    //4jdk1.8 parallelStream 并行流
    class IM4 {

        public void streamOp() {
            List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
            list.parallelStream().forEach(o -> {
                System.out.println("im4 :"+o+"  线程id:"+ Thread.currentThread().getId());
            });
        }
    }


    //5从线程池获取线程
    class IM5 {

        public void t() {
            ExecutorService e = Executors.newFixedThreadPool(2);
            for (int i = 0; i < 5; i++) {
                e.execute(() -> {
                    System.out.println("im5 : 线程id:"+ Thread.currentThread().getId());
                });
            }
        }
    }

    //6 spring 异步注解
    class IM6 {

//        @Async
        public void t() {
            System.out.println(Thread.currentThread().getName());
        }
    }


    public static void main(String[] args) throws ExecutionException, InterruptedException {
        System.out.println("main thread id:"+Thread.currentThread().getId());
        ThreadMethod m = new ThreadMethod();
        IM1 im1 = m.new IM1();
        IM2 im2 = m.new IM2();
        IM3 im3 = m.new IM3();
        IM4 im4 = m.new IM4();
        IM5 im5 = m.new IM5();

        new Thread(im1).start();
        new Thread(im2).start();

        FutureTask<Long> task = new FutureTask<>(im3);
        new Thread(task).start();
        Long aLong = task.get();
        System.out.println("futuretask 执行结果"+aLong);

        im4.streamOp();
        im5.t();

    }
}

执行结果


image.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容