1. 创建多线程方式
①继承Thread类(具有单继承缺陷) ②实现Runnable接口,创建线程实例
2. 使用start()方法启动线程(后台调用run()方法)
3. 建议使用=null 方式来代替stop、suppend、resume等方法。
4. 线程分为5种状态,分别是新建、就绪、运行、阻塞、结束
5. 可以使用线程组(ThreadGroup)来对线程进行统一管理
注:每个线程都属于一个线程组,默认情况,新建线程属于生成它的当前线程
6.加锁 (同步本质上就是给对象加锁)
①使用synchronized关键字给方法加锁 //对于实例方法,是给调用该方法的对象加锁。对于静态方法,是给类加锁
②使用同步语句块 //格式:synchronized(Object ){...}
7. 线程默认名称为Thread-i
8. 给类加锁 //格式:sychronized(Object.class) {...}
9. 同步存在的条件
a. 存在多线程 b. 存在同步代码块 c. 存在共享数据
注:为避免问题,给他们加同一个对象锁或类锁
10. 使用锁对象来调用wait、notify、notifyAll
11. 1.5版本以后使用Lock对象来代替synchronized,使用Condition代替Object中的线程操作方法
Condition对象可通过Lock获取,一个Lock锁可以绑定多个Condition对象,使用Lock时最后需释放锁(使用finally语句)