Java Effective - X
90 points to make your coffee

10. Concurrency

78. Synchronize access to shared mutable data

79. Avoid excessive synchronization

80. Prefer executors, tasks and streams to threads

    ExecutorService exec = Executors.newSingleThreadExecutor();
    exec.execute(runnable);
    exec.shutdown();

81. Prefer concurrency utils over wait-notify

82. Document thread safety

83. Use lazy initialization judiciously

*****
Written by Martin on 20 August 2019