zsynchronizowana metoda lub użyj sprężyny @transakcyjne?

Mam metodę, która będzie używana do wysyłania wiadomości e-mail. chcę zablokować tę metodę, aby tylko jeden wątek mógł uzyskać do niej dostęp w czasie, a reszta puli jednocześnie. powinienem zsynchronizować metodę lub użyć spring @transactional PROPAGATION_REQUIRED?

w mojej warstwie usług
 //each time use new thread to send out email
  public  void sendThroughSMTP(List<String> emails,String subject,String content){

            //each time will open and sent through port 25.  dont u think this will caused too many threads spawned?
            BlastEmailThread blastEmailThread = new BlastEmailThread(emails,subject,content);

            blastEmailThread.start();


}

questionAnswers(6)

yourAnswerToTheQuestion