⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 deadlock.java

📁 此为java开发方面的算法
💻 JAVA
字号:
/****************************************************
 * 参考书籍:<<Java面向对象编程>>                   *
 * 技术支持网址:www.javathinker.org                *
 ***************************************************/
   package mythread.deadlock;
   import java.util.*;

   public class DeadLock {
       public static void main(String args[]) {

           SyncStack stack1 = new SyncStack("stack1");
           SyncStack stack2 = new SyncStack("stack2");
           stack1.setAnotherStack(stack2);
           stack2.setAnotherStack(stack1);

           Thread1 t1=new Thread1(stack1);
           Thread1 t2=new Thread1(stack2);
           t1.start();
           t2.start();
       }
  }

   class Thread1 extends Thread {
       private SyncStack theStack;

       private int num;
       private static int counter = 1;

       public Thread1 (SyncStack s) {
           theStack = s;

           num = counter++;
       }



       public void run() {

           for (int i = 0; i < 200; i++) {

                  theStack.pop();


           }
       }
   }


   class SyncStack {
       private SyncStack anotherStack;

       int buffer=0;
       private String name;


       public SyncStack(String name){this.name=name; }

       public void setAnotherStack(SyncStack stack){anotherStack=stack;}

       public  synchronized void pop() {

           buffer--;
           try { Thread.sleep(100); } catch (InterruptedException e) { }
           System.out.println("pop "+name+": "+buffer+" by " +Thread.currentThread().getName()  );

           anotherStack.push();
       }

       public synchronized void push() {
           buffer++;
           try { Thread.sleep(100); } catch (InterruptedException e) { }
           System.out.println("push "+name+": "+buffer +" by " +Thread.currentThread().getName() );


       }


       public String toString(){
        return "Statck";
       }
   }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -