Escrito na frente: As perguntas da entrevista avançada de back-end Java necessárias para a entrevista em 2020. Um guia de revisão é resumido no Github. O conteúdo é detalhado, com fotos e textos. Amigos que precisam aprender podem estrelar!
Endereço GitHub: https://github.com/abel-max/Java-Study-Note/tree/master
(1) Tarefas assíncronas
A demanda por tarefas assíncronas é frequentemente encontrada em cenários reais de desenvolvimento. Existem muitas maneiras de obter assincronia em Java, como multithreading para obter assincronia. No SpringBoot, a realização de tarefas assíncronas precisa apenas adicionar duas anotações. Adicione a anotação @Async à classe atual, adicione @EnableAsync para iniciar a classe
Escreva um serviço, AsynService, deixe este serviço pausar por 3 segundos antes de enviar os dados
@Service
public class AsynService {
@Async
public void async(){
try {
Thread.sleep(3000);
System.out.println("执行结束");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Escreva o controlador e chame esta classe de serviço
@RestController
public class IndexController {
@Autowired
public AsynService asynService;
@RequestMapping("/index")
public String asynctask(){
asynService.async();
return "async task";
}
}
Depois de executar, visite http: // localhost: 8080 / index no navegador e você verá que, como a assincronia está ativada, o navegador produzirá a tarefa assíncrona primeiro e o console exibirá o fim da execução após três segundos.
(2) Tarefas cronometradas
Eu usei tarefas cronometradas no projeto de código aberto anterior de pico. Na cena naquele momento, eu pesquisei o banco de dados a cada 1 minuto para consultar produtos expirados. As tarefas agendadas têm uma ampla variedade de aplicações, como empacotar logs automaticamente às 12 horas todos os dias e fazer backup às 12 horas todas as noites. A realização de tarefas de cronometragem no SpringBoot requer apenas duas anotações: @Scheduled e @EnableScheduling Como antes, @Scheduled é usada para tarefas que precisam ser executadas regularmente e @EnableScheduling é usada para classes de inicialização. Primeiro, vamos escrever a classe de tarefa cronometrada:
@Service
public class ScheduleService {
@Scheduled(cron = "0/10 * * * * ? ")
public void sayHello(){
System.out.println("hello");
}
}
Uma expressão cron precisa ser adicionada à anotação @Scheduled para determinar o tempo de execução da tarefa de temporização. Aqui, significa que ela será executada a cada 10 segundos.
Em seguida, adicione a anotação @EnableScheduling à classe de inicialização. Execute o projeto, você verá que um hello será enviado a cada dez segundos.