Ist*_*van 2 java multithreading executorservice
我正在实现一项服务,该服务执行一些由此处模拟的长时间运行的任务Thread.sleep(10000)。当我 ctrl+c 执行时,我从未得到InterruptedException我所期望的结果。我想知道为什么。
package simple;
import my.util.Now;
import io.dropwizard.lifecycle.Managed;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class EmailSender implements Managed {
private static final Logger LOGGER = LoggerFactory.getLogger(EmailSender.class);
ScheduledExecutorService executorService = Executors.newScheduledThreadPool(3);
// Constructor
public EmailSender() {}
@Override
public void start() {
LOGGER.info("Starting email sender thread: {}", Thread.currentThread().getName());
Runnable task = () -> {
LOGGER.info("Running: {} in thread: {}", Now.now(), Thread.currentThread().getName());
try {
Thread.sleep(10000);
} catch (InterruptedException ie) {
LOGGER.error("Task is being interrupted: {}", ie.getMessage());
}
};
executorService.scheduleAtFixedRate(task, 0, 5, TimeUnit.SECONDS);
}
@Override
public void stop() {
LOGGER.info("Stopping email sender thread: {}", Thread.currentThread().getName());
executorService.shutdown();
}
}
Run Code Online (Sandbox Code Playgroud)
假设以executorService.shutdown();这种方式等待任务执行结束是否安全?
| 归档时间: |
|
| 查看次数: |
3593 次 |
| 最近记录: |