Java并发
文章平均质量分 90
General-M
互联网电商相关技术经理
展开
-
理解 Thread.Sleep 函数
我们可能经常会用到 Thread.Sleep 函数来使线程挂起一段时间。那么你有没有正确的理解这个函数的用法呢?思考下面这两个问题:假设现在是 2008-4-7 12:00:00.000,如果我调用一下 Thread.Sleep(1000) ,在 2008-4-7 12:00:01.000 的时候,这个线程会 不会被唤醒?某人的代码中用了一句看似莫明其妙的话:Thread.Sleep(0)转载 2016-03-23 17:47:36 · 446 阅读 · 0 评论 -
Executor框架实例
Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService,CompletionService,Future,Callable等。运用该框架能够很好的将任务分成一个个的子任务,使并发编程变得方便。该框架的类图(方法并没有都表示出来)如下: 创建线程池的介绍转载 2017-02-22 16:29:06 · 670 阅读 · 0 评论 -
Java线程面试题
下面是Java线程相关的热门面试题,你可以用它来好好准备面试。1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。Java在语言层面对多线程提供了卓越的支持,它也是一个很好的转载 2017-02-22 16:35:24 · 531 阅读 · 0 评论 -
java中volatile关键字的含义
在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制。 synchronized 同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有加上synch转载 2017-02-22 16:42:48 · 465 阅读 · 0 评论 -
多个线程之间共享数据的方式
ps:由于最近的面试很多问题都涉及多线程,自己感觉以前学的还是太浅,再展开学学吧。今天先从考的比较频繁的“多线程共享数据”开始。一.目标谈到多线程共享数据,理想情况下我们希望做到“同步”和“互斥”。这是目标我们暂且把它先放到这。二.分类多线程共享数据通常的场景有一下两种:场景一:卖票,我们都买过火车票。要买火车票我们可以去车站,也可以通过代售转载 2017-02-22 17:01:09 · 1267 阅读 · 0 评论 -
Java中的ReentrantLock和synchronized两种锁定机制的对比
多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个 Thread 类,可以用它来构建、启动和操纵线程,Java 语言包括了跨线程传达并发性约束的构造 —— synchronized 和 volatile 。在简化与平台无关的并发类的开发的同时,它决没有使并发类的编写工作变得更繁琐,只是转载 2017-02-22 17:44:59 · 1046 阅读 · 0 评论 -
Java线程中yield与join方法的区别
本文由 ImportNew - Calarence 翻译自 How To Do In Java。欢迎加入翻译小组。转载请见文末要求。长期以来,多线程问题颇为受到面试官的青睐。虽然我个人认为我们当中很少有人能真正获得机会开发复杂的多线程应用(在过去的七年中,我得到了一个机会),但是理解多线程对增加你的信心很有用。之前,我讨论了一个wait()和sleep()方法区别的问题,这一次,我将会转载 2017-02-22 17:47:29 · 1118 阅读 · 0 评论 -
读写锁ReadWriteLock
from URL : http://hi.baidu.com/zhizhesky/blog/item/cabcbb515b9b6808377abe5f.html在上文中提到了Lock接口以及对象,使用它,很优雅的控制了竞争资源的安全访问,但是这种锁不区分读写,称这种锁为普通锁。为了提高性能,Java提供了读写锁,在读的地方使用读锁,在写的地方使用写锁,灵活控制,如果没有写锁的情况下,读是无转载 2017-02-22 17:49:29 · 815 阅读 · 0 评论 -
单例模式以及双检锁DCL
1、单例模式 关于单例模式,就不再详细叙述,想必大家都耳熟能详了,简单回顾下吧。以下是单例模式的一个例子:[java] view plain copypublic class DoubleCheckedLock { private static DoubleCheckedLock instance;转载 2017-02-22 17:54:04 · 413 阅读 · 0 评论 -
jvm面试题
1. 内存模型以及分区,需要详细到每个区放什么。2. 堆里面的分区:Eden,survival from to,老年代,各自的特点。3. 对象创建方法,对象的内存分配,对象的访问定位。4. GC的两种判定方法:引用计数与引用链。5. GC的三种收集方法:标记清除、标记整理、复制算法的原理与特点,分别用在什么地方,如果让你优化收集方法,有什么思路?6. GC收转载 2017-02-22 17:56:15 · 1544 阅读 · 0 评论 -
ConcurrentHashMap总结
并发编程实践中,ConcurrentHashMap是一个经常被使用的数据结构,相比于Hashtable以及Collections.synchronizedMap(),ConcurrentHashMap在线程安全的基础上提供了更好的写并发能力,但同时降低了对读一致性的要求(这点好像CAP理论啊 O(∩_∩)O)。ConcurrentHashMap的设计与实现非常精巧,大量的利用了volatile,f转载 2017-02-22 16:15:52 · 557 阅读 · 0 评论 -
CyclicBarrier的用法
CyclicBarrier的用法 CyclicBarrier是一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。转载 2017-02-22 16:07:32 · 408 阅读 · 0 评论 -
Java 理论与实践: 非阻塞算法简介
在不只一个线程访问一个互斥的变量时,所有线程都必须使用同步,否则就可能会发生一些非常糟糕的事情。Java 语言中主要的同步手段就是 synchronized 关键字(也称为内在锁),它强制实行互斥,确保执行 synchronized 块的线程的动作,能够被后来执行受相同锁保护的 synchronized 块的其他线程看到。在使用得当的时候,内在锁可以让程序做到线程安全,但是在使用锁定保护短的代码路转载 2017-02-04 17:03:16 · 193 阅读 · 0 评论 -
Java线程(篇外篇):线程本地变量ThreadLocal
首先说明ThreadLocal存放的值是线程内共享的,线程间互斥的,主要用于线程内共享一些数据,避免通过参数来传递,这样处理后,能够优雅的解决一些实际问题,比如hibernate中的OpenSessionInView,就是使用ThreadLocal保存Session对象,还有我们经常用ThreadLocal存放Connection,代码如:[java] view pla转载 2017-02-04 17:09:00 · 428 阅读 · 0 评论 -
Java线程(篇外篇):阻塞队列BlockingQueue
好久没有写文章了,这段时间事情比较杂,工作也比较杂乱,上周日刚搬完家,从自建房搬到了楼房,提升了一层生活品质,哈哈!不过昨天晚上在公交车上钱包被偷了,前段时间还丢个自行车,不得不感叹,京城扒手真多,还无人处理。言归正传,这一段时间我的工作主要是改进公司的调度器,调度器调度线程池执行任务,生产者生产任务,消费者消费任务,那么这时就需要一个任务队列,生产者向队列里插入任务,消费者从队列里提取任务执行,转载 2017-02-04 17:21:42 · 223 阅读 · 0 评论 -
深入理解JVM—JVM内存模型
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在转载 2017-01-24 17:29:54 · 400 阅读 · 0 评论 -
Java多线程编程总结
http://lavasoft.blog.51cto.com/62575/27069/转载 2017-01-24 17:34:20 · 295 阅读 · 0 评论 -
java设计模式大话之单例模式
孩子:“妈妈,我是怎么来的?”妈妈:“嗯,是这样的。有一天呀,妈妈肚子里有一个卵子,很可爱,后来爸爸带来了好多精子,他们都很喜欢卵子,于是就争先恐后地跑向卵子……”孩子:“哈!我知道了,我跑赢了。”理解了这个小故事,也就理解了单例原创 2017-01-19 13:41:43 · 331 阅读 · 0 评论 -
深入理解Java内存模型(一)——基础
深入理解Java内存模型(一)——基础http://ifeve.com/java-memory-model-1/转载 2017-02-04 12:13:06 · 311 阅读 · 0 评论 -
JUC-java并发集合源码解析
http://blog.csdn.net/column/details/vicky-juc.html转载 2017-02-10 17:39:44 · 1063 阅读 · 0 评论 -
RPC、ORB、MOM三类中间件比较
网上漫无目的的爬文档看,发现Oracle一篇《面向消息的中间件 (Message-Oriented Middleware, MOM)》讲得不错,摘部分内容出来,大家分享,我也留个备份。 中间件可以划分为以下几类:基于远程过程调用 (Remote Procedure Call, RPC) 的中间件,允许一个应用程序中的过程调用远程应用程序中的过程,就好像它们是本地调用一样。转载 2017-01-20 17:37:58 · 2416 阅读 · 0 评论 -
activemq的几种基本通信方式总结(点对点-发布订阅)
简介 在前面一篇文章里讨论过几种应用系统集成的方式,发现实际上面向消息队列的集成方案算是一个总体比较合理的选择。这里,我们先针对具体的一个消息队列Activemq的基本通信方式进行探讨。activemq是JMS消息通信规范的一个实现。总的来说,消息规范里面定义最常见的几种消息通信模式主要有发布-订阅、点对点这两种。另外,通过结合这些模式的具体应用,我们在处理某些应用场景的时候也衍生转载 2017-01-20 17:51:34 · 4806 阅读 · 0 评论 -
java内存模型读书笔记
什么是内存模型在多核系统中,处理器一般有一层或者多层的缓存(CPU缓存(Cache Memory)是位于CPU与内存之间的临时存储器,它的容量比内存小的多,但是交换速度却比内存要快得多),这些缓存通过加速数据访问和降低内存在总线上的通讯(本地缓存能满足许多内存操作)来提高cpu性能。有些处理器有很强的内存模型(strong memory model),能够让所有的处理器在任何时候任何指原创 2017-04-05 11:51:21 · 424 阅读 · 0 评论