一个类中的多个同步静态方法[重复]。

问题描述 投票:0回答:1

我在一个类中有多个同步静态方法。

 public class DoSomething {
    public static synchronized void fun1()  {
            /*do something time consuming*/
    }

    public static synchronized void fun2()  {
            /*do something time consuming*/
    }
    .
    .
 }

现在只允许一个线程执行该类中的任何一个同步函数,这并不高效,因为这些函数是相互独立的,可以并行运行。这是不高效的,因为这些函数是相互独立的,并且可以并行运行。如何才能使它们相互独立,但每个方法只允许一个线程执行,并且对类的改动最小。

java multithreading concurrency static synchronized
1个回答
4
投票

使用单独的对象来锁定。

    private static final lock1=new Object();
    private static final lock2=new Object();

    public static void fun1()  {
       synchronized(lock1) {
            /*do something time consuming*/
       }
    }
    public static void fun2()  {
       synchronized(lock2) {
            /*do something time consuming*/
       }
    }
© www.soinside.com 2019 - 2024. All rights reserved.