//[进程和线程]
// 【进程】:进程指的是一次动态执行的过程;
// 【线程】:操作系统进行运算调度的最小单位,是进程的执行单位
// 一个进程至少有一个线程
// 【单线程】:在一个时间段内只有一条执行路径
// 【多线程】:在一个应用程序中,同一个时间段,运行多个线程,完成不同的工作
// 【线程不安全】:多线程,多个线程访问同一个资源时,如果不能保证数据更新一致,就叫线程不安全
// 【创建线程】:
// 1.继承Thread类,重写run方法 直接new 对象
// 2.实现Runnable接口,重写run方法 Thread t=new Thread(new Train()) ;
// 【线程不安全,加锁】
// 1.代码块锁:synchronized(this){代码}
// 2.方法锁 public synchronized void drinkWater()
// 【线程周期】:
// 1.新建状态:创建线程对象
// 2.就绪状态:调用start方法后就进入就绪状态
// 3.运行状态:获取到cpu使用权限后,自动调用run()方法
// 4.阻塞状态;线程放弃cpu使用权限,进入阻塞状态,只有当阻塞解决,才能进入就绪状态
// 5.死亡状态:run()方法运行结束或者出现异常,线程死亡
// 当单线程时 StringBuilder(多线程时,线程不安全) 比StringBuffer块
MovieTickets t1 = new MovieTickets();
// 创建线程
Thread a1=new Thread(t1,"窗口1");
Thread a2=new Thread(t1,"窗口2");
Thread a3=new Thread(t1,"窗口3");
a1.start();
a2.start();
a3.start();