多线程
玩名堂_
勤于求知,细于做事
展开
-
java模拟异步消息的发送与回调
原文地址:http://kt8668.iteye.com/blog/205739 一、 异步和同步 讲通俗点,异步就是不需要等当前执行的动作完成,就可以继续执行后面的动作。 通常一个程序执行的顺序是:从上到下,依次执行。后面的动作必须等前面动作执行完成以后方可执行。这就是和异步相对的一个概念——同步。 案例: A、张三打电话给李四,让李四帮忙写份材料。 B、李四接到转载 2017-07-20 15:49:43 · 497 阅读 · 0 评论 -
Fork/Join框架介绍
1. 什么是Fork/Join框架 Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。 我们再通过Fork和Join这两个单词来理解下Fork/Join框架,Fork就是把一个大任务切分为若干子任务并行的执行,Join就是合并这些子任务的执行结果,最后得到这个大任务的结果。比如计算1+转载 2017-07-31 13:47:05 · 358 阅读 · 0 评论 -
解析java的hashmap死循环问题
原文地址:http://coolshell.cn/articles/9606.html 问题的症状 从前我们的Java代码因为一些原因使用了HashMap这个东西,但是当时的程序是单线程的,一切都没有问题。后来,我们的程序性能有问题,所以需要变成多线程的,于是,变成多线程后到了线上,发现程序经常占了100%的CPU,查看堆栈,你会发现程序都Hang在了HashMap.get()转载 2017-07-24 16:22:13 · 312 阅读 · 0 评论 -
Java并发编程:volatile关键字解析
原文链接:http://www.cnblogs.com/dolphin0520/p/3920373.html 一.内存模型的相关概念 大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内转载 2017-07-25 18:48:50 · 251 阅读 · 0 评论 -
java并发包中Lock的实现原理
1. Lock 的简介及使用 Lock是java 1.5中引入的线程同步工具,它主要用于多线程下共享资源的控制。本质上Lock仅仅是一个接口(位于源码包中的java\util\concurrent\locks中),它包含以下方法 //尝试获取锁,获取成功则返回,否则阻塞当前线程 void lock(); //尝试获取锁,线程在成功获取锁之前被中断,则放弃获取锁,抛转载 2017-07-27 19:14:37 · 261 阅读 · 0 评论 -
Java Web并发访问的线程安全问题
一、Servlet的线程安全问题 Java web服务器下,每个Servlet只有一个实例(即单例模式),导致有多个Http请求发给一个Servlet实例,每个请求是一个线程。如果Servlet有类变量或实例变量,那么该变量就变成了共享资源,当多个线程访问操作该变量时,就有可能存在安全隐患。例如,当一个Http请求在访问该变量的时候,另一个Http请求可能在修改它的值。 解决方法:在S转载 2018-01-06 23:09:30 · 2535 阅读 · 0 评论 -
Java中ExecutorService和CompletionService区别
我们现在在Java中使用多线程通常不会直接用Thread对象了,而是会用到java.util.concurrent包下的ExecutorService类来初始化一个线程池供我们使用。 之前我一直习惯自己维护一个list保存submit的callable task所返回的Future对象。 在主线程中遍历这个list并调用Future的get()方法取到Task的返回值。 public c...原创 2018-07-05 14:19:14 · 339 阅读 · 0 评论