Java架构技术进阶Java老男孩的成长之路

Java并发编程—刨根问底搞懂创建线程到底有几种方法?

2020-02-24  本文已影响0人  java菲菲

推荐阅读

  1. 2020复工跳槽季,ZooKeeper灵魂27连问,这谁顶得住?
  2. 疫情期间“闭关修炼”,吃透这本“Java核心知识”,跳槽面试不心慌
  3. 秋招JAVA面试总结:Java+并发+Spring+MySQL+分布式+Redis+算法+JVM等
  4. 终极手撕之架构大全:分布式+框架+微服务+性能优化,够不够?

Oracle官方文档对创建线程的说明

/**
 * 实现线程的第二个方式 实现Runnable接口
 * @author yiren
 */
public class MyRunnable implements Runnable {
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName() + " Runnable running...");
    }

    public static void main(String[] args) throws IOException {
        new Thread(new MyRunnable()).start();
        System.in.read();
    }
}

两种发方法的优缺点

    /* What will be run. */
    private Runnable target;

        public Thread(Runnable target) {
        init(null, target, "Thread-" + nextThreadNum(), 0);
    }

        private void init(ThreadGroup g, Runnable target, String name,
                      long stackSize) {
        init(g, target, name, stackSize, null, true);
    }

        private void init(ThreadGroup g, Runnable target, String name,
                      long stackSize, AccessControlContext acc,
                      boolean inheritThreadLocals) {
        ......

        this.target = target;

        ......
    }

        @Override
    public void run() {
        if (target != null) {
            target.run();
        }
    }

其他说法:

image.png

作者:苡仁
原文链接:https://juejin.im/post/5e3f9669e51d4526cb160ee9

上一篇下一篇

猜你喜欢

热点阅读