1.线程和进程的区别
进程——资源分配的最小单位
线程——程序执行的最小单位
2.多线程实现的四种方式
2.1继承Thread类创建线程
2.2实现Runnable接口创建线程
2.3实现Callable接口,通过FutureTask包来创建线程
2.4通过线程池创建线程
注:使用ExecutorService、Callable、Future实现有返回结果的线程
3.多线程常用的方法
sleep() :调用该方法,让当前的的线程暂停一段时间,让低优先级的线程得到执行的机会,也可以让同优先级、 高优先级的线程有执行的机会
join() : 等待一个线程执行完后后,再执行下一个线程
yield() :同sleep()一样,但不能设置暂停时间
wait() 、notify() 、notifyAll():
这三个 方法用于协调多个线程对共享数据的存取,所以必须在synchronized语句块内使用。synchronized关键字用于保护共享数据,阻止其他线 程对共享数据的存取。
4.多线程信息共享
synchronized:互斥锁,
volatile关键字:禁止重排序、内存可见性
5.多线程工具类 BlockingQueue
6.Atomic类
7.门闩、Lock