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

来源:互联网 发布:科力达传输软件 编辑:程序博客网 时间:2024/05/21 18:00
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");    }}