java 同步与死锁

来源:互联网 发布:dom的编程艺术 编辑:程序博客网 时间:2024/06/07 19:26

1   同步概念:

案例 代码:

package zyl.thread;
class MyThreadDemo implements Runnable{
 private int ticket = 5;
 public void run()
 {
  //资源共享的时候需要用到同步
  synchronized(this){
   for(int i =0;i<10;i++)
   {
               tell();
    //    if(ticket>0)
//    {
//     try {
//      Thread.sleep(1000);
//     } catch (InterruptedException e) {
//      // TODO Auto-generated catch block
//      e.printStackTrace();
//     }
//     System.out.println("车票:"+ticket--);
//    }
   }
  }
  
 }
 public synchronized void tell()
 {
  if(ticket>0)
  {
   try {
    Thread.sleep(1000);
   } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   System.out.println("车票:"+ticket--);
  }
 }
}
/*
 * 死锁:学生找工作(高薪)
 *    企业要你有工作经验(经验)
 *    解决死锁必须有一方 降低要求
 */
public class ThreadDemo05 {
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  MyThreadDemo m = new MyThreadDemo();
  //五张票  三个窗口买  一起公用五张票的资源
  Thread  t1 = new Thread(m);
  Thread  t2 = new Thread(m);
  Thread  t3 = new Thread(m);
  t1.start();
  t2.start();
  t3.start();
  
 }
}

案例结果

车票:5
车票:4
车票:3
车票:2
车票:1


原创粉丝点击