创建线程
两种方式:
- 继承Thread类
- 实现Runnable接口,重写run()方法
建议使用 实现Runnable接口的方式,解决单继承的局限性
synchronized关键字
解决多线程的同步问题:用synchronized关键字,它是一种同步锁,保证同一时刻最多只有1个线程执行被Synchronized修饰的方法 / 代码块。
可以修饰:代码块,方法,分为对象锁(包括方法锁和代码块锁)和类锁(包括方法锁和代码块锁);也可分为方法锁(对象锁和类锁)和代码块锁(对象锁和类锁)
特别注意
Synchronized修饰方法时存在缺陷:若修饰1个大的方法,将会大大影响效率
-
示例
若使用Synchronized关键字修饰 线程类的run(),由于run()在线程的整个生命期内一直在运行,因此将导致它对本类任何Synchronized方法的调用都永远不会成功 -
解决方案
使用 Synchronized关键字声明代码块