城管希课堂之线程

开启一个线程 相当于开启了一个 CPU的执行路径(相对独立)

CPU在执行多个线程的时候 是随机的 跟线程优先级有关

分时调度 CPU 会在多个线程中 进行随机切换


单线程程序:

程序由上至下依次执行(一个执行完 才会去执行下一个)

好处:数据绝对安全 不牵扯到 操作共享数据

弊端:效率不高 


主线程:

主线程的程序 除了主线程以外 一般都叫子线程

一个程序只有一个主线程

main函数 就是一个线程 并且是主线程


主线程(叫main的线程)是如何被执行的

JVM调用main函数 --->CPU就为叫main得函数开辟一个执行路径

--->相当于在这个执行路径中 执行main函数中的代码


Thread线程类(开辟一个主线程以外的线程 子线程)

1.创建一个Thread类的子类

2.重写run方法

    run方法就是你要执行的代码

3.调用start方法 开启线程(不能重复开启)

public class Demo02 {public static void main(String[] args) {//Exception in thread "main"//异常出现在 叫main的 这个线程中 //System.out.println(10/0);//System.out.println("主线程");//创建一个子线程 //开启多个线程时 多个线程会同时执行 //并且是相对的独立执行单元SubThread subThread = new SubThread();//开启线程subThread.start();//再开一个子线程SubThread sbsubThread = new SubThread();sbsubThread.start();//主线程 出现异常了 但是并没有影响子线程的执行//主线程for (int i = 0; i < 100; i++) {System.out.println("main--"+i);}}
}//声明一个线程类
class SubThread extends Thread{//重写run方法@Overridepublic void run() {//子线程默认的名字 Thread-0//X是从0开始的System.out.println(10/0);for (int i = 0; i < 100; i++) {System.out.println("run---"+i);}// 子线程 指定的代码System.out.println("我是子线程");}
}

直接调用run方法就相当于调用了一个普通的成员方法

Thread.currentThread(); 获取当前正在执行的线程

线程的创建方式

// 方式1 (用thread子类的方式)Thread thread = new Thread(){@Overridepublic void run() {System.out.println("子线程执行的方法");}};thread.start();
// 方式2(接口实现类的方式)Runnable runnable = new Runnable() {@Overridepublic void run() {System.out.println("子线程方法");}};Thread thread2 = new Thread(runnable);thread2.start();
//方式3 (方式2的两部写在一起)new Thread(new Runnable(){@Overridepublic void run() {System.out.println("子线程方法");}}).start();

线程状态

1.新建状态 new Thread

2.运行状态 start

3.死亡状态 run方法运行完毕

4.受阻塞状态 cpu未执行该线程时

5.休眠状态 sleep方法 休眠事件过了 恢复

6.等待状态 wait notify


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部