Écrit en face: Les questions d'entretien avancées du back-end Java nécessaires pour les entretiens en 2020. Un guide de révision est résumé sur Github. Le contenu est détaillé, avec des images et des textes. Les amis qui ont besoin d'apprendre peuvent jouer!
Adresse GitHub: https://github.com/abel-max/Java-Study-Note/tree/master
(1) Tâches asynchrones
Les exigences des tâches asynchrones sont souvent rencontrées dans les scénarios de développement réels. Il existe de nombreuses façons de réaliser l'asynchronie en Java, comme le multithreading pour réaliser l'asynchronie. Dans SpringBoot, la réalisation de tâches asynchrones n'a besoin que d'ajouter deux annotations. Ajouter l'annotation @Async à la classe actuelle, ajouter @EnableAsync pour démarrer la classe
Écrivez un service, AsynService, laissez ce service se mettre en pause pendant 3 secondes avant de sortir des données
@Service
public class AsynService {
@Async
public void async(){
try {
Thread.sleep(3000);
System.out.println("执行结束");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Écrivez le contrôleur et appelez cette classe de service
@RestController
public class IndexController {
@Autowired
public AsynService asynService;
@RequestMapping("/index")
public String asynctask(){
asynService.async();
return "async task";
}
}
Après l'exécution, visitez http: // localhost: 8080 / index dans le navigateur, et vous constaterez que, comme l'asynchronisme est activé, le navigateur affichera d'abord la tâche asynchrone et la console affichera la fin de l'exécution après trois secondes.
(2) Tâches chronométrées
J'ai utilisé des tâches chronométrées dans le précédent projet open source Spike. Dans la scène à ce moment-là, j'ai interrogé la base de données toutes les 1 minute pour rechercher des produits expirés. Les tâches planifiées ont un large éventail d'applications, telles que l'emballage automatique des journaux à 12 heures tous les jours et la sauvegarde à 12 heures tous les soirs. La réalisation de tâches de minutage dans SpringBoot ne nécessite que deux annotations: @Scheduled et @EnableScheduling Comme précédemment, @Scheduled est utilisé pour les tâches qui doivent être exécutées régulièrement et @EnableScheduling est utilisé pour les classes de démarrage. Tout d'abord, écrivons la classe de tâches de synchronisation:
@Service
public class ScheduleService {
@Scheduled(cron = "0/10 * * * * ? ")
public void sayHello(){
System.out.println("hello");
}
}
Une expression cron doit être ajoutée à l'annotation @Scheduled pour déterminer le temps d'exécution de la tâche de minutage, ici cela signifie qu'elle sera exécutée toutes les 10 secondes.
Ajoutez ensuite l'annotation @EnableScheduling à la classe de démarrage. Exécutez le projet, vous constaterez qu'un bonjour sera émis toutes les dix secondes.