В SpringBoot, как обеспечить выполнение @Async method1 перед @Asyn method2? - PullRequest
0 голосов
/ 10 октября 2019

Скажите, у меня есть method1 и method2, я хочу убедиться, что method2 должен быть выполнен после завершения method1. Фрагменты кода идут следующим образом, но method2 может начинаться перед method1, как я могу убедиться в этом?

    @Async("executor")
    public void method1(){
      // Do somthing
    }

    @Async("executor")
    public void mehthod2(){
      // Do something
    }

    @Override
    public void run(){
      method1();  // how to ensure that method2 is execute after method1 is over?
      method2();
    }

1 Ответ

0 голосов
/ 10 октября 2019

Есть несколько способов сделать то же самое, я бы предпочел сделать это с ReadWriteLock

ReadWriteLock

  private ReadWriteLock readWriteLock = new ReentrantReadWriteLock();

    @Async("executor")
      public void method1(){
      readWriteLock.writeLock().lock();
        // Do somthing
        readWriteLock.writeLock().unlock();
      }

      @Async("executor")
      public void mehthod2(){
       //lies dormant until the lock has been acquired
       readWriteLock.writeLock().lock();
        // Do something
        readWriteLock.writeLock().unlock();
      }

      @Override
      public void run(){
        method1();  // how to ensure that method2 is execute after method1 is over?
        method2();
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...