美文网首页
13 java.lang.Thread

13 java.lang.Thread

作者: 十丈_红尘 | 来源:发表于2018-09-28 21:49 被阅读0次
1️⃣类定义
public class Thread implements Runnable

实现了Runnable接口:Runnable接口中只有一个run()方法,它非Thread类子类的类提供的一种激活方式。一个类实现Runnable接口后,并不代表该类是一个“线程”类,不能直接运行,必须通过Thread实例才能创建并运行线程。


2️⃣属性
    /**
     * 线程名称的字节数组
     */
    private volatile char  name[];
    /**
     * 线程优先级
     */
    private int priority;
    /**
     * 线程是否单步
     */
    private boolean single_step;  
    /**
     * 是否是守护线程
     */
    private boolean daemon = false; 
    /**
     * JVM状态
     */
    private boolean stillborn = false; 
    /**
     * 从构造方法传过来的Runnable
     */
    private Runnable target;  
    /**
     * 线程组
     */
    private ThreadGroup group; 
    /**
     * 类加载器
     */
    private ClassLoader contextClassLoader;  
    /**
     * 线程编号
     */
    private static int threadInitNumber;  
    /**
     * 初始状态
     */
    private volatile int threadStatus = 0; 
    /**
     * 最低优先级
     */
    public final static int MIN_PRIORITY = 1; 
    /**
     * 默认优先级
     */
    public final static int NORM_PRIORITY = 5; 
    /**
     * 最高优先级
     */
    public final static int MAX_PRIORITY = 10; 
    /**
     * 线程状态
     */
    public enum State {
        /**
         * 新创建了一个线程对象,但还没有调用start()方法
         */ 
        NEW,
        /**
         * Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。
         * 线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该
         * 状态的线程位于可运行线程池中,等待被线程调度选中,获取CPU的使用权,此
         * 时处于就绪状态(ready)。就绪状态的线程在获得CPU时间片后变为运行中状态(running) 
         */
        RUNNABLE,
        /**
         * 表示线程阻塞于锁.
         */
        BLOCKED,
        /**
         * 进入该状态的线程需要等待其他线程做出一些特定动作(通知或中断)
         */
        WAITING,
        /**
         * 该状态不同于WAITING,它可以在指定的时间后自行返回
         */
        TIMED_WAITING,
        /**
         * 表示该线程已经执行完毕
         */
        TERMINATED;
    }

3️⃣构造器

Thread的构造器都是调用本类私有的init()方法来初始化线程的,init()方法是一个重载这个方法我们会在讲解方法时详细讲解;

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

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

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

    public Thread(String name) {
        init(null, null, name, 0);
    }

    public Thread(ThreadGroup group, String name) {
        init(group, null, name, 0);
    }

    public Thread(Runnable target, String name) {
        init(null, target, name, 0);
    }
 
    public Thread(ThreadGroup group, Runnable target, String name) {
        init(group, target, name, 0);
    }

    public Thread(ThreadGroup group, Runnable target, String name,
                  long stackSize) {
        init(group, target, name, stackSize);
    }

-----------------> 未完待续!!!

相关文章

网友评论

      本文标题:13 java.lang.Thread

      本文链接:https://www.haomeiwen.com/subject/tmrmoftx.html