# dz_java_Tread20200529 **Repository Path**: edu_luoxi/dz_java_Tread20200529 ## Basic Information - **Project Name**: dz_java_Tread20200529 - **Description**: 线程 - **Primary Language**: Java - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-05-29 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # dz_java_Tread20200529 #### 介绍 线程 开个QQ,开了一个进程;开了迅雷,开了一个进程。 在QQ的这个进程里,传输文字开一个线程、传输语音开了一个线程、弹出对话框又开了一个线程。 所以运行某个软件,相当于开了一个进程。在这个软件运行的过程里(在这个进程里),多个工作支撑的完成QQ的运行,那么这“多个工作”分别有一个线程。 所以一个进程管着多个线程。 通俗的讲:“进程是爹妈,管着众多的线程儿子”... #### 课堂笔记 1、进程和线程的概念 ``aidl `` 1.1 进程 进程是操作系统中为完成一定的数据处理任务而运行的程序; 进程:就是运行中的程序,进程运行时需要使用数据; 进程=程序+数据; 进程是操作系统进行资源分配的基本单位; 进程是可以保持战友系统资源的(操作系统的核心资源是cpu) 进程具有动态性、并发性、独立性、异步性等特性; 进程是动态的; 程序是静态的; 并发执行和同时执行: 并发执行是指在一个时间段内同时执行; 在同一个时间段并发的进程或线程是交替执行的; 但是从一个时间段内看,是同时执行的; 同时执行是指在一个时间点同时执行; 1.2 进程的状态 进程在操作系统中执行会有状态转换的过程; 掌握进程 三态、五态的状态转换图; 三态: 就绪态、运行态、阻塞态; 运行态:进程在cpu中执行的状态; 就绪态:是进程获取了除cpu之外的其它资源,只等cpu调度执行了; 阻塞态:是指进程执行时,因为需要等待外部的IO输入或者是其它中断处理,而造成的不能继续在cpu 中执行, 而被移除cpu之后,等待外部操作完成之后,再次进入就绪状态; 1.3 线程概念 线程是微型的进程; 线程包含在进程中,一个进程中有多个线程(一个进程至少包含一个线程),线程之间是可以共享资源的; 线程的三态图和五态图和进程是一样的; 线程和进程的调用状态和调度算法是一样的;(课下扩充:调度算法) ```over``` 2、多线程编程 ```aidl``` 2.1 多线程编程实现 (1)让程序编程线程运行 继承Thread类; (2)让程序借助线程运行 实现Runnable接口; 通过继承Thread类重写run方法或者通过实现Runnable接口实现run方法,可以进行多线程编程; 多线程的业务逻辑都是写在run方法中实现的; 多线程的启动都是通过start方法启动一个多线程, 而不能直接调用run方法(直接调用run方法 其实就是一个普通方法,不会走多线程的运行机制) 2.2 守护线程和非守护线程 守护线程:为其他线程的运行提供服务的线程,属于系统级别的线程; 非守护线程:用户线程,用户完成用户业务逻辑处理的; 当程序运行到只剩下守护线线程时,程序就可以进行终止了。 2.3 线程类中常用方法 run方法:线程的业务逻辑处理方法,必须通过start方法启动,才是多线程,直接调用run方法不是多线程; start方法:线程启动方法;只有通过调用start方法才是多线程;调用run方法不是多线程 sleep静态方法:线程休眠方法; join方法:线程之间的调用方法,一个线程可以通过join方法调用另外一个线程,进行调用的主线程会被阻塞, 等待被join子线程执行完毕之后,才会继续执行; yield方法:调用yield方法,当前线程主动放弃cpu资源,让其他线程执行; over 3. xxxx ```over``` #### 安装教程 1. xxxx 2. xxxx 3. xxxx #### 使用说明 1. xxxx 2. xxxx 3. xxxx #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 码云特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)