Thread.MIN_PRIORITY = 1 Thread.NORM_PRIORITY = 5 Thread.MAX_PRIORITY = 10
public class ThreadDemo { public static void main(String[] args) { MyThread thread1=new MyThread(); new Thread(thread1).start(); new Thread(thread1).start(); new Thread(thread1).start(); new Thread(thread1).start(); } } class MyThread implements Runnable{ private int ticket=5; public MyThread(){ } public void run(){ for(int i=0;i<100;i++){ synchronized (this) { if(ticket>0){ try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("卖出了第"+ticket--+"张票"); } } } } }
②使用同步方法
public class ThreadDemo { public static void main(String[] args) { MyThread thread1=new MyThread(); new Thread(thread1).start(); new Thread(thread1).start(); new Thread(thread1).start(); new Thread(thread1).start(); } } class MyThread implements Runnable{ private int ticket=5; public void run(){ for(int i=0;i<100;i++){ this.sale(); } } public synchronized void sale(){ if(ticket>0){ try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("卖出了第"+ticket--+"张票"); } } }
8、wait 和 sleep 比较
①wait别的线程可以访问锁定对象,它是Object类的方法,注意:调用wait方法的时候必须锁定该对象
②sleep时别的线程不可以访问锁定对象,它是Thread类的方法