------------恢复内容开始------------
线程实现
1.继承Thread类
1) 定义子类继承Thread类。
2) 子类中重写Thread类中的run方法。
3) 创建Thread子类对象,即创建了线程对象。
4) 调用线程对象start方法:启动线程,调用run方法。
2.实现Runable类
1) 定义子类,实现Runnable接口。
2) 子类中重写Runnable接口中的run方法。
3) 通过Thread类含参构造器创建线程对象。
4) 将Runnable接口的子类对象作为实际参数传递给Thread类的构造器中。
5) 调用Thread类的start方法:开启线程,调用Runnable子类接口的run方法
优先选择:Runable方式
原因:
1.实现的方式没有类的单继承性的局限性
2.实现的方式更适合来处理多个线程有共享数据的情况
联系:public class Thread implements Runable
相同点:两种方式都需要重写run(),将线程要执行的逻辑声明在run()中
线程安全:
1.方法:
1.1同步代码块
1.2.同步方法
1,3.Lock锁
2.syschronized与Lock异同:
不同:syschronized机制在执行完相应的同步代码以后,自动释放同步监视器
lock需要手动启动同步(Lock()),同时结束同步也需要手动的实现(unlock())
3.优先使用顺序
Lock->同步代码块()
------------恢复内容结束------------