package 多线程.lock锁; import java.util.concurrent.locks.ReentrantLock; /*、 * * //同步代码块 * * */ public class Sale implements Runnable { private int m = 10; private ReentrantLock relock = new ReentrantLock(); boolean f =true; @Override public void run() { //保证每一个线程都必须完成,其他线程才能抢 使用同步锁 出现共享变量都要加锁 多个线程必须持有同一个锁 while (f) { relock.lock(); if(m > 0) { System.out.println(Thread.currentThread().getName() + "卖票---" + (m--) + "张"); }else { f =false; } relock.unlock(); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } } }
package 多线程.lock锁; import 多线程.synchronized锁.Sale2; public class Demo02 { public static void main(String[] args) throws InterruptedException { Sale sale = new Sale(); Thread t1 =new Thread(sale,"窗口1"); Thread t2 =new Thread(sale,"窗口2"); Thread t3 =new Thread(sale,"窗口3"); t1.setDaemon(true);//将该线程标记为守护线程或用户线程。 t1.start(); t1.yield(); t1.join(10);//等待该线程终止 System.out.println(t2.getPriority());//默认优先级为5 t2.setPriority(7);//更改线程的优先级。 t2.start(); t3.start(); } }