
java多线程
胡小海丶
这个作者很懒,什么都没留下…
展开
-
空中网多线程面试题2
//第二题:现成程序中的Test类中的代码在不断地产生数据,然后交给TestDo.doSome()方法去处理,就好像生产者在不断地产生数据,消费者在不断消费数据。请将程序改造成有10个线程来消费生成者产生的数据,这些消费者都调用TestDo.doSome()方法去进行处理,故每个消费者都需要一秒才能处理完,程序应保证这些消费者线程依次有序地消费数据,只有上一个消费者消费完后,下一个消费者才能消费数原创 2014-07-07 19:30:27 · 888 阅读 · 0 评论 -
Condition的阻塞队列
package cn.zto.condition;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;//阻塞队列public class ConditionT...原创 2014-07-07 18:57:50 · 207 阅读 · 0 评论 -
java5中的线程同步
package cn.zto.countdownlatch;import java.util.concurrent.CountDownLatch;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;//使用countdownLathch类实现线程同步publ...原创 2014-07-07 18:54:48 · 146 阅读 · 0 评论 -
java线程池
利用Executors创建所需要的缓存类型package cn.zto.threadpool;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;//线程池public class TestThreadPool { public stati...原创 2014-07-07 18:49:14 · 178 阅读 · 0 评论 -
使用ReadWriteLock实现模拟缓存
使用ReadWriteLock的读写锁 实现 模拟缓存的 功能 package cn.zto.lock;import java.util.HashMap;import java.util.Map;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurren...原创 2014-07-07 18:44:39 · 271 阅读 · 0 评论 -
多线程入门实例(转)
大神的多线程基础入门 http://www.cnblogs.com/rollenholt/archive/2011/08/28/2156357.html#!comments 通过上面的示例代码 可以更好的看懂下面的(多线程和并发库高级应用视频) http://yun.baidu.com/s/1bncoJ2f ...原创 2014-07-07 17:36:40 · 134 阅读 · 0 评论 -
JAVA高并发学习笔记(二) 多线程基础
线程是进程(程序在计算机上的一次执行活动)内的执行单元进程是以独立于其他进程的方式运行的,进程间是互相隔离的。一个进程无法直接访问另一个进程的数据。进程的资源诸如内存和CPU时间片都是由操作系统来分配。线程又被称为轻量级进程。每个线程有它独自的调用栈, 但是在同一进程下的线程又能互相访问它们间的共享数据。每个线程都有它独自的缓存。如果一个线程读取了某些共享数据,那么它将这些数据存放在自己的缓存中以供将来再次读取。原创 2015-09-07 18:28:54 · 1264 阅读 · 1 评论 -
JAVA高并发学习笔记(三) JMM(Java内存模型)
原子性是指一个操作是不可中断的。即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。在并发时,程序的执行可能就会出现乱序可见性是指当一个线程修改了某一个共享变量的值,其他线程是否能够立即知道这个修改可能由各个环节优化产生,没有办法从一个线程当中看另外一个线程一个变量执行到什么程度去推测另外一个变量的情况。原创 2015-09-08 17:56:40 · 1218 阅读 · 1 评论 -
JAVA高并发学习笔记(四) 无锁
Java当中提供了一些有关无锁类的使用,在底部使用比较交换指令来实现。一般来说有锁的方式,会导致线程可能会阻塞、挂起,在进入临界区之前由系统对它进行阻塞和挂起,相对来讲无锁的性能会更好些,除非是人为的挂起线程,否则通过无锁的方式线程是不可能被挂起的只会不断的重试。如果线程被挂起,做一次线程的上下文切换可能需要8万个时钟周期,但是如果做重试的操作(比如循环体),除非重试的操作过多,否则一般基本上原创 2015-09-09 08:29:51 · 3231 阅读 · 0 评论 -
JAVA高并发学习笔记(一)
1.1.为什么需要并行① 业务需要业务模型需要一个逻辑执行的执行单元让不同线程承担不同的业务工作简化任务调度适合计算密集型② 性能问题多线程的程序在多核cpu上面性能要好一些cpu单核频率性能已经基本上无法提升了通过多核来提升处理能力原创 2015-09-07 16:04:51 · 2422 阅读 · 0 评论 -
java5中的线程同步
package cn.zto.countdownlatch;import java.util.concurrent.CountDownLatch;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;//使用countdownLathch类实现线程同步public class转载 2014-07-14 16:42:59 · 684 阅读 · 0 评论 -
使用ReadWriteLock实现模拟缓存
使用ReadWriteLock的读写锁 实现 模拟缓存的 功能 package cn.zto.lock;import java.util.HashMap;import java.util.Map;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent.locks.Re转载 2014-07-14 16:38:51 · 1062 阅读 · 3 评论 -
多线程入门实例(转)
大神的多线程基础入门 http://www.cnblogs.com/rollenholt/archive/2011/08/28/2156357.html#!comments 通过上面的示例代码 可以更好的看懂下面的(多线程和并发库高级应用视频) http://yun.baidu.com/s/1bncoJ2f转载 2014-07-14 16:37:22 · 656 阅读 · 0 评论 -
Condition的阻塞队列
package cn.zto.condition;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;//阻塞队列public class ConditionTest { L转载 2014-07-14 16:44:02 · 785 阅读 · 0 评论 -
java线程池
利用Executors创建所需要的缓存类型package cn.zto.threadpool;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;//线程池public class TestThreadPool { public static void main(St转载 2014-07-14 16:39:59 · 753 阅读 · 0 评论 -
空中网多线程面试题1
//第一题:现有的程序代码模拟产生了16个日志对象,并且需要运行16秒才能打印完这些日志,请在程序中增加4个线程去调用parseLog()方法来分头打印这16个日志对象,程序只需要运行4秒即可打印完这些日志对象。原始代码如下: package read; public class Test { public static void main(String[] args){原创 2014-07-07 19:26:50 · 1143 阅读 · 0 评论 -
空中网多线程面试题3
第三题:现有程序同时启动了4个线程去调用TestDo.doSome(key, value)方法,由于TestDo.doSome(key, value)方法内的代码是先暂停1秒,然后再输出以秒为单位的当前时间值,所以,会打印出4个相同的时间值,如下所示: 4:4:1258199615 1:1:1258199615 3:3:1258199615 1:2:12581996原创 2014-07-07 19:32:25 · 931 阅读 · 0 评论 -
空中网多线程面试题
//第一题:现有的程序代码模拟产生了16个日志对象,并且需要运行16秒才能打印完这些日志,请在程序中增加4个线程去调用parseLog()方法来分头打印这16个日志对象,程序只需要运行4秒即可打印完这些日志对象。原始代码如下: package read; public class Test { public static void main(String[] arg...原创 2014-07-11 12:55:26 · 204 阅读 · 0 评论