线程创建,状态,以及上下文切换简介

package my.thread.test1;

public class InitThread {

    public static void main(String[] args) {

        System.out.println("main线程下的子线程运行");
        Thread t1 = new MyThread();
        System.out.println(t1.getState());
        t1.setName("child thread of main");
        t1.start();
        System.out.println(t1.getState());

        Runnable r = new MyThread1();

        //第二个子线程
        Thread t2 = new Thread(r);
        t2.start();

        // t1 t2线程属于main线程的子线程,该两个线程属于用户线程还是守护线程,要取决于其父线程. 
        // 当然,也可以调用线程的thread.setdeamon来设置该属性
        // 线程的线程状态可以通过 thread.getstate来获取.
        // 有 NEW RUNNABLE
        // RUNNABLE是一个复合状态,其有ready running子状态
        // blocked 一个线程发起了一个阻塞式IO或者试图去获取一个呗其他线程是有的锁时,会处于该状态
        // waiting 无线等待其他线程执行特定操作的状态
        // timed_waiting 带有时间限制的等待线程
        // terminated 已经执行结束的线程状态

        // 当线程状态由runnable 状态转换为 blocked或者其他除了new 以及 结束状态的状态时,都意味着上下文切换的产生
        //上下文切换 : 上下文信息(context,包括cpu的寄存器,程序计数器在某一时间点的内容等)
        // 上下文切换 指的是 对线程的上下文信息进行保存和恢复的过程
    }
}

/**
 * 线程创建方式1.
 * @author 蔡长盟
 * @description 
 * @version 2017年7月26日
 */
class MyThread extends Thread {
    //thread也继承了runnable接口
    //所以 继承thread类,重写run方法即可创建一个子线程...
    public void run() {
        System.out.println(Thread.currentThread().getName() + " thread is running");
    }
}
class MyThread1 implements Runnable {

    public void run() {
        System.out.println(Thread.currentThread().getName() + " thread is running");
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值