关于每3秒执行一次的定时任务内报错导致定时任务不执行的问题

如下代码创建的每3秒执行一次的定时任务,任务内报错的话会导致任务卡住,然后定时任务好像就挂掉了,后面不再执行,有什么办法即使某次任务出错或超时,下一次仍然继续执行么?最好是能将出错的进程关闭并释放资源,不影响性能。

public class ThreadPoolTest {
    public static int k = 0;
    public static void main(String[] args) {
        ScheduledThreadPoolExecutor threadPoolExecutor = new ScheduledThreadPoolExecutor(3);
        threadPoolExecutor.scheduleWithFixedDelay(new Runnable() {
            @Override
            public void run() {
                k++;
                for (int i = 0; i < 4; i++) {
                    System.out.println("执行线程:" + k + "-" + i);
                    try {
                        Thread.sleep(1000);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
                int m = 4 / (k - 3);
            }
        }, 0, 3000, TimeUnit.MILLISECONDS);
    }
}

应该是任务处理时间不够,可以考虑加入同步技术试试。