# dz_java_thread20200602 **Repository Path**: edu_luoxi/dz_java_thread20200602 ## Basic Information - **Project Name**: dz_java_thread20200602 - **Description**: 线程结束 - **Primary Language**: Java - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-06-02 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # dz_java_thread20200602 #### 介绍 线程结束 #### 课堂笔记 1、多线程同步控制的方式 ``aidl`` 1)synchronized 方法 适用于多个方法排队的情况,调用是锁定的对象是方法所在类的当前对象(this), 多个synchronized方法如被多线程同时调用,则必须按照一定的顺序轮流执行 注意:不论调用同一方法还是用不同方法都需要排队 synchronized方法,方法1和方法2排队使用 语法: 访问控制修饰符 synchronized 返回值类型 方法名(形参){ 需要进行同步控制的代码 } 2)synchronized块: 同一方法调用需要排队使用,不同的方法调用是不需要排队; 在方法中使用synchronized块使用特点: 1、synchronized块内的数据同步控制一致性,对于块外的数据不控制一致性; 2、相较于synchronized方法,synchronized块消耗的内存资源更少 3、声明不同的锁,对于使用不同锁的方法,互不影响 需要排队的两个方法使用同一把锁,其他方法,使用不同的锁 语法: synchronized (Object){ 需要进行同步控制的代码 } 3)Lock锁; 业务开展之前加锁(.lock),无论业务是否正常完成,必须解锁(.unlock) 推荐使用的方式: private final ReentrantLock lock = new ReentrantLock(); 同步控制的意义: 1、对共享资源跳转的调整 2、排队使用 ```over``` 2、线程之间的通信 ```aidl``` 本质上还是对多个线程共享资源的一种协调控制,其目的是为更加合理的利用有限资源(CPU、内存等)。 从设计角度出发,是站在共享资源的角度对多个线程进行沟通和协调,可以简单的理解为发消息或提醒。 常规操作包括: 1、共享资源命令线程“等待” wait 2、共享资源“唤醒”等着的线程 notify 不是线程在调用该指令,是该线程的资源调用该指令 wait 调用该方法,使用共享资源的线程一直等待,直到调用notify; notify 随机唤醒等待的资源,但没有资源也不能用,会唤醒一个,直到唤醒等待的有资源的线程 notifyAll 唤醒所有等待的线程,有资源的线程使用 notifyAll 和notify相比,notifyAll更有效率,但是更消耗资源 #### 安装教程 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/)