线程池
线程池与new Thread
线程池的好处
- 重用存在的线程,减少对象创建、消亡的开销,性能好
- 可有效控制最大并发线程数,提高系统资源利用率,同时可以避免过多资源竞争,避免阻塞。
- 提供定时执行、定期执行、单线程、并发数控制等功能。
当访问共享变量时,往往需要加锁来保证数据同步。一种避免使用同步的方式就是不共享数据。如果仅在单线程中访问数据,就不需要同步了,这种技术称为线程封闭。
线程封闭技术有一个常见的应用,JDBC的Connection对象。Connection对象在实现的时候并没有对线程安全做太多的处理,JDBC的规范里也没有要求Connection对象必须是线程安全的。实际在服务器应用程序中,线程从连接池获取了一个Connection对象,使用完再把Connection对象返回给连接池,由于大多数请求都是由单线程采用同步的方式来处理的,并且在Connection对象返回之前,连接池不会将它分配给其他线程。因此这种连接管理模式处理请求时隐含的将Connection对象封闭在线程里面,这样我们使用的Connection对象虽然本身不是线程安全的,但是它通过线程封闭也做到了线程安全。