[toc]
每当看到类似xx的几种实现方式时,脑海里就会浮现出孔乙己用蘸酒的手指在柜台上写“茴”字的画面,很多人都坚持说无论黑猫白猫抓到老鼠就是好猫,在一个项目的初始阶段 ,这种达到基本实现目的的做法无可厚非。但是在项目中期,对某一个技术的多重实现方式的追求就很有必要,在功能达到基本要求之后,我们追求的就是性能,对性能的追求实际上就是对我们脑力的不断考验,通俗地讲,这是一个挤牙膏的过程,可参考牙膏厂。多种实现方式之间可以进行一个性能对比,在保证相同结果的同事,耗费资源少者必然可取。
正是这种对目前技术的不满足和极致的追求,才会让我们这个社会变的更加的美好。
现在计算机硬件性能在绝大多数场景下大有富裕,充分发挥计算机性能,追求更短时间达到目的的代码会让我们在职场上足够亮眼。
这里我们即将开始Java
多线程技术之旅,去探索Java
多线程的技术原理和实现方式,一起探索高性能编程之道。
1. 基本概念
1.1 Thread类
线程类,每个线程就是一个THread类的实例。
1.2 Runable接口
一个接口,实现Runable接口的时候必须实现run方法,在new Thread()对象的时候可以传入一个实现了Runable接口的任务。
1.3 Callable接口
一个接口,实现Callable接口时必须实现call方法,与Runable的区别就是Callable是可以传递参数的。
1.4 Futuer类
线程执行结果返回对象类,在Future实例获取结果的时候会阻塞线程
1.5 线程池
因为系统在创建是一件耗费比较大的动作,而线程池是为了解决线程复用的问题,让线程可以重复利用,免除频繁的创建换销毁。
在jdk里面也提供了一些常见的默认线程池:
- 单线程线程池;
- 固定大小线程池;
- 带缓存功能的线程池;
- 定时任务调度线程池;
1.6 线程的生命周期
2 多线程操作过程中的数据安全
jdk已经提供了的线程安全数据类型: