¿Método sincronizado o uso del resorte @transactional?

Tengo un método que se utilizará para enviar correo electrónico. Quiero bloquear este método para que solo un hilo pueda acceder a él por vez y el resto se agrupen simultáneamente. ¿Debo sincronizar el método o usar spring @transactional PROPAGATION_REQUIRED?

en mi capa de servicio
 //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();


}

Respuestas a la pregunta(6)

Su respuesta a la pregunta