1.什么是进程?
正在运行的程序称之为进程。他是系统分配资源的基本单位。
2.什么是线程?
线程,又称轻量级进程,是进程中的一条执行路径,也是CPU的基本调度单位。
若一个程序可同时一时间执行多个线程,就是支持多线程,一个进程由一个或多个线程组成,彼此间完成不同的工作(任务),同时执行,成为多线程。
3.为什么使用多线程?
充分利用了CPU,提高了程序的效率。
4.创建多线程的三种方式
第一种:继承Thread类
第二种:实现Runnable接口
第三种:实现Callable接口
5.设置和获取线程的名称
获取线程名:this.getName()
获取线程名:Thread.currentThread().getName()
设置线程名称:线程对象.setName("线程名称")
6.Thread案例
public class SellTicket extends Thread{ private int tick=100; @Override public void run() { while (true){ if (tick>0){ tick--; System.out.println(Thread.currentThread().getName()+"卖了一张票,剩余:"+tick+"张"); }else { System.out.println(Thread.currentThread().getName()+"票已售卖完"); break; } } } }
public class TestTick { public static void main(String[] args) { SellTicket t1=new SellTicket(); t1.setName("窗口A"); t1.start(); SellTicket t2=new SellTicket(); t2.setName("窗口B"); t2.start(); SellTicket t3=new SellTicket(); t3.setName("窗口C"); t3.start(); SellTicket t4=new SellTicket(); t4.setName("窗口D"); t4.start(); } }
7.Runnable案例
public class SellTick implements Runnable{ private int tick=100; public void run() { while (true){ if (tick>0){ tick--; System.out.println(Thread.currentThread().getName()+ "卖了一张票;剩余:" + tick + "张"); }else { break; } } } }
public class TestTick { public static void main(String[] args) { SellTicket tick=new SellTicket(); Thread thread=new Thread(tick,"窗口A"); thread.start(); Thread thread1=new Thread(tick,"窗口B"); thread1.start(); Thread thread2=new Thread(tick,"窗口C"); thread2.start(); Thread thread3=new Thread(tick,"窗口D"); thread3.start(); } }
会出现超卖和重买现象,这是因为多个线程共享一个资源,导致了现场安全隐患问题,后期可以使用锁来解决。