Day13 多线程
Day13
多线程
线程的五种状态
- 被创建 new
- 运行 run start
- 消亡 stop run
- 冻结 sleep wait notify
- 临时阻塞状态
创建线程的第二种方式
实现Runnable接口,扩展已知类,通过接口来添加线程类的任务。
- 定义类实现Runnable接口。
- 覆盖接口中的run方法,将线程的任务代码封装到到run方法中。
- 通过Thread类创建线程对象,将Runnable接口的子类对象作为Thread类的构造函数参数进行传递。
- 调用线程对象的start方法开启线程。
实现接口的好处
- 将线程的任务从线程的子类中分离出来,进行了单独的封装。将任务封装成了对象。————面向对象的思想。
- 避免了java单继承的局限性。
所以该方式较为常用。
同步
同步代码块
synchronized(对象)
{ 需要同步的代码 }
相当于一个对象锁,代码块内如果进入了一个进程,别的进程就进不去。
同步函数
- 在方法前加synchronized关键字
- 同步函数使用的锁是this
- 但是建议使用同步代码块,更加灵活,且锁不唯一。
- 静态的同步函数使用的锁是该函数所属的字节码文件对象,可以用getClass方法获取,也可以用当前 类名.class 形式表示
浙公网安备 33010602011771号