
并发
文章平均质量分 79
生而知之者为妖
这个作者很懒,什么都没留下…
展开
-
当线程池中的一个线程出现异常,那它该何去何从
1、execute()方法是不会有返回值的,当任务的执行方式是execute时,可以看到堆栈异常的输出,因为该方法内部将异常抛出。而当执行方式是submit时,堆栈异常没有输出,它不抛出异常而是将异常进行了保存,丢到了Future对象中,返回Future对象。调用Future.get()方法时,可以捕获到异常,可以让我们更容易的处理异常。(题外话— execute只能接受Runnable类型的任务,submit不管是Runnable还是Callable类型的任务都可以接受)2、线程池中某个线程出现异常,它原创 2020-05-28 12:12:17 · 1122 阅读 · 0 评论 -
高并发网站架构演进之路
概述本文以淘宝作为例子,介绍从一百个到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则。特别说明:本文以淘宝为例仅仅是为了便于说明演进过程可能遇到的问题,并非是淘宝真正的技术演进路径基本概念在介绍架构之前,为了避免部分读者对架构设计中的一些概念不了解,下面对几个最基础的概念进行介绍:(1)分布式系统中的多个模块在不同服务器上部署,即可称为分布式系统,如Tomcat和数据库分别部署在不同的服务器转载 2020-05-21 11:30:43 · 400 阅读 · 0 评论 -
Synchronized关键字和锁优化
多线程编程中,我们往往使用synchronized关键字以ReentrantLock类来实现线程安全,二者都是基于互斥同步的方式来保障并发安全性,且都可重入。尽管最基本的互斥同步手段是synchronized关键字,它是原生语法层面的互斥锁,而ReentrantLock是API层面的互斥锁;但在JDK1.6之前,synchronized关键字的性能远远不如ReentrantLock。但在1.6以及...原创 2020-03-02 19:23:34 · 908 阅读 · 0 评论 -
Java内存模型和Volatile关键字
前言学习并发关键在于学会解决并发过程中线程通信以及线程同步中出现的问题,线程通信有两类机制,一是共享内存,另一个是消息传递。JAVA使用的是第一种,通过在共享内存中进行读写来进行消息传递,在共享内存中,线程通信是隐性的,对编程人员是透明的,因此容易出现可见性问题;线程同步则是显性的,需要编程人员来指定线程之间的互斥以及同步。高效并发系列皆是围绕着介绍虚拟机如何实现线程、多线程之间由于共享和竞争数...原创 2020-02-15 22:16:26 · 474 阅读 · 0 评论