同步修饰符在Java中有什么作用?

sync关键字用于指示一种方法一次只能由一个线程访问。同步修改器可以与四个访问级别修改器中的任何一个一起应用。

示例

public class TestThread {

   public static Object Lock1 = new Object();

   public static Object Lock2 = new Object();

   

   public static void main(String args[]) {

      ThreadDemo1 T1 = new ThreadDemo1();

      ThreadDemo2 T2 = new ThreadDemo2();

      T1.start();

      T2.start();

   }

   private static class ThreadDemo1 extends Thread {

      public void run() {

         synchronized (Lock1) {

            System.out.println("Thread 1: Holding lock 1...");

            try { Thread.sleep(10); }

            catch (InterruptedException e) {}

            System.out.println("Thread 1: Waiting for lock 2...");

            

            synchronized (Lock2) {

               System.out.println("Thread 1: Holding lock 1 & 2...");

            }

         }

      }

   }

   private static class ThreadDemo2 extends Thread {

      public void run() {

         synchronized (Lock2) {

            System.out.println("Thread 2: Holding lock 2...");

            try { Thread.sleep(10); }

            catch (InterruptedException e) {}

            System.out.println("Thread 2: Waiting for lock 1...");

            

            synchronized (Lock1) {

               System.out.println("Thread 2: Holding lock 1 & 2...");

            }

         }

      }

   }

}

输出结果

Thread 1: Holding lock 1...

Thread 2: Holding lock 2...

Thread 1: Waiting for lock 2...

Thread 2: Waiting for lock 1...

以上是 同步修饰符在Java中有什么作用? 的全部内容, 来源链接: utcz.com/z/326635.html

回到顶部