黑马程序员技术交流社区
标题:
【石家庄校区】JavaSE第二阶段day11学习笔记
[打印本页]
作者:
lovemiya
时间:
2018-4-23 15:08
标题:
【石家庄校区】JavaSE第二阶段day11学习笔记
本帖最后由 小石姐姐 于 2018-4-27 11:28 编辑
多线程学习笔记
Day 11
概念
进程: Process, 一个应用程序在内存中的执行区域
线程: Thread, 进程中的一条执行路径
并发: 并行发生, 同时发生, 多线程就可以实现并发
同步: 注意并不是同时的意思, 同步是指一步接一步的执行, 一个执行完毕再开始执行下一个. 单线程就是同步
异步: 不是一步一步执行, 而是同时执行多步, 每个步骤何时结束不确定. 多线程就是异步
阻塞: 上一行代码正在执行, 还没有执行完毕, 程序就阻塞在这里了, 下一行代码必须等上一行不再阻塞后才能执行
单线程和多线程的特点
单线程: 同一时间只做一件事, 安全性高, 效率低
多线程: 同一时间做多个事情, 安全性低, 效率高
多线程的实现方式
继承Thread类, 重写run方法
实现Runnable接口(仍然是创建Thread类对象), 重写run方法
java.lang.Thread类: 实现了Runnable接口
构造方法
Thread Thread(): 创建Thead对象
Thread Thread(Runnable r): 通过Runnable对象创建Thread对象
Thread Thread(Runnable r, String threadName): 通过Runnable对象创建Thread对象并指定线程名
成员方法
void start(): 启动线程, 即让线程开始执行run()方法中的代码
String getName(): 获取线程的名称
void setName(String name): 设置线程名称
静态方法
static Thread currentThread(): 返回对当前正在执行的线程对象的引用
static void sleep(long millis): 让所在线程睡眠指定的毫秒
多线程中的常见问题
资源共享: 卖票问题
共享资源定义位置: 共享资源要定义在多个线程能够共同使用的地方, 如:
多个Thread共用同一个Runnable实现类对象, 则定义为Runnable实现类的非静态成员变量
如果只用Thread子类, 则可以定义为Thread子类的静态成员变量
操作共享数据的线程安全问题: 使用同步解决
同步代码块
synchronized (锁对象) {}
锁对象
必须是多个线程共享的对象:
一个类的Class对象
如果是实现Runnable, 则可以是this
同步方法
public (static) synchronized void method() {}
锁对象
静态同步方法, 锁对象是: 方法所在类的Class对象
非静态同步方法, 锁对象是: this
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2