分类 多线程与并发 下的文章


撰写于    浏览:889 次  分类: 多线程与并发
ExecutorService 是一个接口,提供了管理终止的方法,以及可为跟踪一个或多个异步任务执行状况而生成Future 的方法。方法摘要从Executor 接口中继承了不跟踪异步线程,没有返回的 execute 方法:execute(Runnable command):在未来某个时间执行给定的命令。该命令可能在新的线程、已入池的线程或者正调用的[...]

撰写于    浏览:1258 次  分类: 多线程与并发
在开发服务器端软件项目时,软件经常需要处理执行时间很短而数目却非常巨大的请求,如果为每一个请求创建一个新的线程,会导致性能上的瓶颈,因为线程对象的创建和销毁需要JVM频繁地进行处理,如果请求的执行时间很短,可能花在创建和销毁线程对象的时间大于真正执行任务的时间,若这样,则系统性能大幅降低。在JDK5中提供了线程池的支持,主要的作用是支持高并发的访问[...]

撰写于    浏览:2134 次  分类: 多线程与并发,一针见血20点
应用程序这个词包括两个类别:应用和程序。应用面向的对象是人,程序面向的对象是CPU。应用=加班+框架,程序=数据结构+算法多线程与并发研究的本质就是在研究程序。

撰写于    浏览:716 次  分类: 多线程与并发,一针见血20点
数据在哪里存在呢?只在内存吗?不是的。数据在内存中存在,但是当用的时候会加载到CPU的寄存器里面。内存和寄存器是两个地方,从而出现了新的名词:内存可见性和寄存器可见性。为什么叫内存可见性呢?感觉很奇怪的名字。其实,明白以下道理就不奇怪了:数据的流动过程是:内存->寄存器->计算器很多时候,数据从内存地址读取到寄存器里面,后面的计算过程中[...]

撰写于    浏览:2729 次  分类: 多线程与并发
关于ThreadLocalThreadLocal类并不java并发包里面的一个类,而是java.lang包里面的一个使用频次并不是非常高的一个类,尽量它不在并发包里面,但它的设计用途却可以用来规避一些同步问题:其提供了一个线程副本的成员变量,从而在一些情况下可以巧妙避开并发问题。我们知道在多线程情况下对共享变量的修改,如果不采用任何同步策略,那么结[...]

撰写于    浏览:285 次  分类: 多线程与并发
Executor:一个接口,其定义了一个接收Runnable对象的方法executor,其方法签名为executor(Runnable command),ExecutorService:是一个比Executor使用更广泛的子类接口,其提供了生命周期管理的方法,以及可跟踪一个或多个异步任务执行状况返回Future的方法AbstractExecutor[...]

撰写于    浏览:232 次  分类: 多线程与并发
Java里,每个线程都有自己的ThreadLocalMap,里边存着自己私有的对象。Map的Entry里,key为ThreadLocal对象,value即为私有对象T。在spring MVC中,常用ThreadLocal保存当前登陆用户信息,这样线程在任意地方都可以取到用户信息了。public class UserContext { pri[...]

撰写于    浏览:284 次  分类: 多线程与并发
常见的限流算法有:计数器、令牌桶、漏桶。1、计数器算法采用计数器实现限流有点简单粗暴,一般我们会限制一秒钟的能够通过的请求数,比如限流qps为100,算法的实现思路就是从第一个请求进来开始计时,在接下去的1s内,每来一个请求,就把计数加1,如果累加的数字达到了100,那么后续的请求就会被全部拒绝。等到1s结束后,把计数恢复成0,重新开始计数。具体的[...]

撰写于    浏览:65587 次  分类: 多线程与并发
在Java中,所有实例域、静态域和数组元素存储在堆内存中,堆内存在线程之间共享。局部变量(Local variables),方法定义参数(Java语言规范称之为formal method parameters)和异常处理器参数(exception handler parameters)不会在线程之间共享。Java线程之间的通信由Java内存模型(简[...]

撰写于    浏览:240 次  分类: 多线程与并发
对于下述单例模式,我们使用了两次判断,但是,编译器很有可能会认为第一次判断成功以后没有必要再去做第二次判断,因为编译器会认为instance的值在这两次判断之间并没有改变,编译器是不会去考虑另一个线程有没有来改变instance的值,它只看到这一段代码,但是这里的两次判断是有其作用的。public class Singleton { pri[...]