在《阿里巴巴java开发手册》中指出了线程资源必须通过线程池提供,不允许在应用中自行显示的创建线程,这样一方面是线程的创建更加规范,可以合理控制开辟线程的数量;另一方面线程的细节管理交给线程池处理,优化了资源的开销。而线程池不允许使用Executors去创建,而要通过ThreadPoolExecutor方式,这一方面是由于jdk中Executor框架虽然提供了如newFixedThreadPool()、newSingleThreadExecutor()、newCachedThreadPool()等创建线程池的方法,但都有其局限性,不够灵活;另外由于前面几种方法内部也是通过ThreadPoolExecutor方式实现,使用ThreadPoolExecutor有助于大家明确线程池的运行规则,创建符合自己的业务场景需要的线程池,避免资源耗尽的风险。
1.线程实现可以new thread和实现runable方法,即可以start和run两种方法执行,但是start方法底层为synchronized定义,不能重复执行。
2.执行线程的start方法时会开始执行thread,由JVM调用thread的run方法完成调用
3.线程的中断方法:Thread.stop, Thread.suspend, Thread.resume 都已经被废弃,强制中断导致结果变化,线程不安全
目前可用的方法为 Thread.interrupt()方法,不能真正的中断线程,这点要谨记。需要被调用的线程自己进行配合才行