本帖最后由 小石姐姐 于 2018-4-26 17:16 编辑
多线程笔记
多线程- 进程:Process, 当前正在运行的程序,专业表述:一个应用程序在内存中的执行区域.
- 线程: Thread, 进程中的一个执行控制单元,也叫执行路径
- 一个进程可以有一个线程,单线程---->安全性高,但是效率低
- 一个进程也可以有多个线程,多线程 ---->安全性低,但是效率高
- 并发:并行发生
- 同步:sync,注意并不是同事的意思,同步是指一步接一步的执行,一个执行完毕再开始执行下一个,
- 异步: async,不是一步一步执行,而是同时执行多步,每个步骤何时结束不确定
- 同一个线程内的代码是同步执行的,不同线程的代码是异步执行的
- 阻塞:
创建线程的第一种方式:创建一个类继承Thread类,该子类重写了Thread类的run()方法,- Thread类的成员方法
- String getName();获取此线程的名字
- void setName(String s);设置此线程的名字,构造方法创建的是线程的对象
- CPU执行程序的随机性,(在每个启动程序之间做着来回高速的随机切换,)执行的单一性(CPU只能同时执行一个进程中任务,为了不卡顿,就高速切换,随机执行已启动程序,实现多个程序同时进行的目标),
- 主方法(main)是单线程的
- 在类中调用当前类的方法,直接写方法名,不用对象来调,
- 共享资源容易出现问题,问题的原因就是CPU的随机机制.
- 同步代码块解决线程共享资源的问题. synchronized 关键字(同步:)
- 问题出现原因:
- 要有多个线程
- 要有被多个线程所共享的数据
- 多个线程要并发(同时发生)地访问共享的数据
synchronized:同步,可以修饰代码块和方法,被修饰的代码块和方法一旦被某个线程访问,则直接锁住,其他的线程将无法访问.
} - 注意:
- 同步的优缺点:
- 异步的优缺点
- 同步方法:使用关键字synchronized修饰的方法,一旦被一个线程访问,则整个方法全部锁住,其他线程无法访问
- 非静态同步方法:锁对象是this.
- 静态同步方法: 锁对象是当前类的字节码对象
|
|