Java启动线程的源码讲解

Java启动线程的源码讲解,第1张

Java启动线程源码讲解 前文铺垫

  面向的读者是已经熟练使用过线程池,集成Runnable,直接new Thread 里面编写run方法

  虽然方式和种类很多,但是运行到源码层面方式其实只有一种,我们此篇文章就进行讲解

Runnable 源码

  

@FunctionalInterface
public interface Runnable {
    
    public abstract void run();
}

 Runnable 只是一个接口,所以一个类实现了Runnable,直接调用这个类的run方法和调用一个普通   的方法没什么区别,并不会启动一个线程       

 Thread 源码

  实现了Runnable
public class Thread implements Runnable
   Run
    @Override
    public void run() {
        if (target != null) {
            target.run();
        }
    }

 首先Thread实现Runnable 接口,那么Thread的run方法是否具备启动一个线程的特性,答案是否定的,Thread的run方法和普通方法没有任何区别

  

       run方法和普通方法没什么区别,和启动线程也无关

start 方法
public synchronized void start() {
   
        group.add(this);

        boolean started = false;
        try {
            start0();
            started = true;
        } finally {
            try {
                if (!started) {
                    group.threadStartFailed(this);
                }
            } catch (Throwable ignore) {
                
            }
        }
    }

 start方法调用start0,start0是一个native方法

private native void start0();

        唤起线程的方式只有一种,就是Thread类的 start 方法

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5081943.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-16
下一篇2022-11-16

发表评论

登录后才能评论

评论列表(0条)

    保存