多线程优先级及同步

6、线程的优先级
  Thread.MIN_PRIORITY = 1
  Thread.NORM_PRIORITY = 5
  Thread.MAX_PRIORITY = 10
7、线程同步
  ①使用同步代码块
    

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类的方法

原文地址:https://www.cnblogs.com/rrb520/p/5272417.html