A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 914360849 于 2015-6-26 22:56 编辑
  1. //指定窗口卖指定票
  2. public class ThreadTest {
  3. public static void main(String[] args) {
  4.         
  5.         TicketThread t1=new TicketThread();
  6.         TicketThread t2=new TicketThread();
  7.         TicketThread t3=new TicketThread();
  8.         TicketThread t4=new TicketThread();
  9.         
  10.         t1.setName("口1");
  11.         t2.setName("口2");
  12.         t3.setName("窗口3");
  13.         t4.setName("口4");
  14.         
  15.         t1.start();
  16.         t2.start();
  17.         t3.start();
  18.         t4.start()<div class="blockcode"><blockquote>public class TicketThread extends Thread {
  19.         private static int ticket = 20;
  20.         static Object obj = new Object();

  21.         @Override
  22.         public void run() {

  23.                 while (true) {
  24.                         synchronized (obj) {//obj换成this就没事了???
  25.                                 if (ticket > 0) {

  26.                                         String tname = getName();

  27.                                         if (ticket == 10) {
  28.                                                 if (!("窗口3".equals(tname))) {
  29.                                                         try {
  30.                                                                 wait();
  31.                                                         } catch (InterruptedException e) {
  32.                                                 e.printStackTrace();
  33.                                                         }

  34.                                                 } else {
  35.                                                         System.out.println(getName() + "卖" + (ticket--)
  36.                                                                         + "---张票。");
  37.                                                         notifyAll();
  38.                                                         continue;
  39.                                                 }
  40.                                         }
  41.                                         System.out.println(getName() + "卖" + (ticket--) + "张票。");

  42.                                 }

  43.                         }
  44.                 }
  45.         }
  46. }
复制代码

;
}
}
synchronized()里面传入this就ok 传入TicketThread .class为啥报错
但是实现Runnable接口就正常了


  1. <p align="center"> </p>
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马