java多线程
sigangjun
这个作者很懒,什么都没留下…
展开
-
JAVA 多线程编程 --线程的调度策略
JAVA中一个线程有自己的优先级(priority)getPriority:返回当前线程的优先级setPriority:设置当前线程的优先级 既然JAVA支持多线程,那么多个线程同时执行的时候必然涉及到调度的问题。通过研究官方文档和书籍,我发现:JAVA的调度算法非常简单: 1.选择当前可运行线程中优先级最高的线程运行2.拥有同样优先级的线程:采用round-rob原创 2015-08-19 19:59:39 · 1258 阅读 · 0 评论 -
Java阻塞队列的实现
阻塞队列与普通队列的区别在于,当队列是空的时,从队列中获取元素的操作将会被阻塞,或者当队列是满时,往队列里添加元素的操作会被阻塞。试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列插入新的元素。同样,试图往已满的阻塞队列中添加新元素的线程同样也会被阻塞,直到其他的线程使队列重新变得空闲起来,如从队列中移除一个或者多个元素,或者完全清空队列,下图展示了如何通过阻塞队列来合作:原创 2015-08-19 17:08:37 · 6083 阅读 · 1 评论 -
Java中关于原子操作和volatile关键字
研究ThreadPoolExecutor的时候,发现其中大量使用了volatile变量。不知为何,因此做了一番查找,研究: 其中借鉴了很多网上资料。 在了解volatile变量作用前,先需要明白一些概念: 什么是原子操作? 所谓原子操作,就是"不可中断的一个或一系列操作" , 在确认一个操作是原子的情况下,多线程环境里面,我们可以避免仅仅为保护这个操作在外围加上性能昂贵的锁,甚至借助于原创 2015-08-19 17:46:29 · 3380 阅读 · 0 评论 -
Java 线程面试问题
在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分。如果你想获得任何股票投资银行的前台资讯职位,那么你应该准备很多关于多线程的问题。在投资银行业务中多线程和并发是一个非常受欢迎的话题,特别是电子交易发展方面相关的。他们会问面试者很多令人混淆的Java线程问题。面试官只是想确信面试者有足够的Java线程与并发方面的知识,因为候选人中有很多只浮于表面。用于直接面向市场交易的高容量和低延时原创 2015-08-19 19:40:44 · 626 阅读 · 0 评论 -
死锁,活锁和饥饿
死锁:是指两个或两个以上的进程(或线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 死锁发生的条件互斥条件:线程对资源的访问是排他性的,如果一个线程对占用了某资源,那么其他线程必须处于等待状态,直到资源被释放。请求和保持条件:线程T1至少已经保原创 2015-08-19 19:56:47 · 6388 阅读 · 1 评论