//[进程和线程] // 【进程】:进程指的是一次动态执行的过程; // 【线程】:操作系统进行运算调度的最小单位,是进程的执行单位 // 一个进程至少有一个线程 // 【单线程】:在一个时间段内只有一条执行路径 // 【多线程】:在一个应用程序中,同一个时间段,运行多个线程,完成不同的工作 // 【线程不安全】:多线程,多个线程访问同一个资源时,如果不能保证数据更新一致,就叫线程不安全 // 【创建线程】: // 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();