- 如何创建线程?
(1)、继承Thread类
(2)、实现Runnable类
(3)、使用匿名内部类(Thread类的构造方法)
(4)、通过Executors类创建
2、为什么会出现线程安全问题?
当多个线程同时共享一个全局变量或者静态变量时,且做写操作时,会发生数据冲突问题,也就是线程安全问题。
- 如何解决线程安全问题
通过同步关键字synchronized,或者lock锁。
- synchronized详解
可以分为同步代码块、同步方法,静态同步代码块,静态同步方法
synchronized修饰同步方法和静态同步方法使用的分别是this锁和class锁。
- sleep和wait的区别
- sleep是Thread类的方法,wait是Object的方法
- sleep方法不会释放lock,但是wait会释放,而且会加入到等待队列中。
- sleep方法不依赖于同步器synchronized,但是wait需要依赖synchronized关键字。
- sleep不需要被唤醒(不释放锁),但是wait需要(释放锁)。
6、为什么wait, notify方法定义在Object中?
因为在多线程同步过程中,我们大多数时候使用的是对象锁,所以为了方便所有对象都能使用。
- start方法和run方法的区别
start方法创建线程。
run方法为普通方法,为线程体,不会创建线程。