一、建立线程
1.通过继承Thread类
2.通过实现Runnable接口
区别
1.Runnable可以避免单继承缺陷;
2.Runnable可被多个线程共享(Thread实例),适合于多个线程处理同一资源情况(卖火车票例子)
二、线程的停止
1.使用停止标志(用volatile关键字,可见性)
2.使用interrupt()方法(只是打了个标记,配合interrupted()或isInterrupted())
- 用if(this.isInterrupted())判断,
- 用sleep()期间中断会导致Isterrupt()被清除,抛异常
3.使用stop(),过期了。(用stop()释放锁会出现数据不一致)