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");
}
}
线程创建,状态,以及上下文切换简介
最新推荐文章于 2022-02-16 23:23:45 发布