别的不说先看看java各种岗位的,硬性要求。随便打开一个招聘网站,例如:猎聘网,搜索java,如下图
就点开第一个岗位
发现“多线程”是任职要求之一。说实话,搜素的岗位十个有八个要求有多线程、高并发等经验,过去一年关注了不少的岗位。只要是中高级Java开发攻城狮的岗位要求都必然有多线程、高并发、高可用等项目经验。为了系统深入了解Java多线程的相关知识点,从我的经验来看随便看一些帖子,或者培训机构录制的视频远不够;还是需要自己找一两本系统介绍多线程方面的书籍来看,然后练习。
过去一年看了两三本这方面的书籍,我觉得汪文君老师写的两本非常不错推荐一下给大家。
第一本:《Java高并发编程详解:多线程与架构设计》
这本书并没有讲到J.C.U包里的任何知识,但是把synchronized、voliate、类加载的相关知识讲得非常透彻,而且使用这些基本的关键字模拟实现了J.C.U包了一些锁、线程池。另外,介绍了非常多的、经典的多线程处理的模式 。
第二本:《Java高并发编程:深入理解并发核心库》
这边介绍了微基准测试框架Java Microbenchmark Harness(JMH),然后深入介绍了J.C.U并发核心库的。围绕Java并发包展开,包括Java的原子类型及其底层原理;Java的并发工具集,还穿插了Google Guava的部分内容;Java的并发容器,包括阻塞队列BlockingQueue和并发容器等内容;Java的ExecutorService,以及Future家族成员的详解。
第三本:《Java多线程编程核心技术 第二版》
这边也可以,不过如果有前面两本,就没必要在购买这本了。就不详细介绍了,需要补充这方面知识的朋友们,对吧的购买就行。这三本书都囫囵吞枣的看了一遍,觉得写得相当不错。
为啥要推荐一些多线程方面的书呢?因为虽然做的项目不乏几百万、上千万级别的,但是真正需要编写多线程的代码的场景还是很少的。而招聘的岗位要求里有时刻不缺需要多线程、高并发的项目要求。项目经验不能给的,只能通过多读书,多看方案要弥补这方面的欠缺。项目中欠缺编写多线程代码的场景,但并不代表不存在多线程安全的问题,多线程安全的问题无时无刻都存在,一点都不能马虎。经常看到全局定义使用 simpleDateFormat 的代码。
SimpleDateFormat线程安全测试:
/**
* SimpleDateFormat线程安全测试
*/
public class SimpleDateFormatTest {
private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
ThreadPoolExecutor poolExecutor = new ThreadPoolExecutor(10, 100, 1, TimeUnit.MINUTES, new LinkedBlockingQueue<>(1000), new MyThreadFactory("SimpleDateFormatTest"));
public void test() {
while (true) {
poolExecutor.execute(new Runnable() {
@Override
public void run() {
String dateString = simpleDateFormat.format(new Date());
try {
Date parseDate = simpleDateFormat.parse(dateString);
String dateString2 = simpleDateFormat.format(parseDate);
System.out.println(dateString.equals(dateString2));
} catch (ParseException e) {
e.printStackTrace();
}
}
});
}
}
喜欢,在看