java
文章平均质量分 60
lmc_wy
beautiful life,beautiful world!
Hello,World...
展开
-
java线程可重入性
当线程请求一个由其它线程持有锁的对象时,该线程会阻塞,然而当线程请求由自己持有锁的对象时,该请求能够成功。 java线程中“重入”指的是获取对象锁的操作粒度锁线程,而非“调用”(pthread互斥体的获取操作是以“调用”为粒度)。重入的一种实现方法是为每个锁关联一个线程持有者和计数器,当计数器为0时表示该锁没有被任何线程持有,那么任何线程都可能获得该锁而调用相应的方法;当某一线程请求成功后,JVM原创 2012-07-29 20:49:35 · 1275 阅读 · 0 评论 -
Java 动态代理
java 动态代理,通过反射机制构造类对象,然后实现不同类对象的方法调用利用jdk提供的动态代理接口 接口:package lmc.test.com.cn;public interface Animal { public void speak(); public void run(); } 实现:package lmc.test.com.cn;原创 2013-06-27 10:17:30 · 658 阅读 · 0 评论 -
java volatile:正确使用 Volatile 变量
转载:http://www.ibm.com/developerworks/cn/java/j-jtp06197.html如有侵权:请告知,会立即删除 Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 sync转载 2013-03-04 10:34:18 · 532 阅读 · 0 评论 -
JVM垃圾收集【一】
什么是垃圾?怎样确定垃圾? 背景:垃圾收集并非java语言的伴生产物,垃圾回收比java更加久远,1960年MIT的Lisp是第一门真正使用内存冬天分配和垃圾收集的语言。经过50多年的发展,内存动态分配和回收技术发展到了相当成熟的阶段,除了java语言,很多其它计算机语言也使用动态内存分配与垃圾回收,例如ruby、python等。 什么是内存垃圾,即那些不会被后续程序使原创 2012-10-22 21:47:48 · 629 阅读 · 0 评论 -
java线程停止【四】
对于一些需要线程完成某些计算,并返回计算结果的需求,java新的api提供了Callable接口,该接口返回线程的计算结果,结果以Futrue对象形式,为了支持业务代码能够根据需要等待线程完成计算或者取消任务,Future接口的get函数接口支持timeout参数,即在timeout时间内返回结果,否则抛出TimeoutException异常;同时Future接口支持外围代码直接取消线程任务的功能原创 2012-09-04 23:02:28 · 1049 阅读 · 0 评论 -
java线程停止【二】
本文内容来自《java并发编程实战》 如上一篇java线程停止【一】,利用cancelled标志在一定场景可以停止线程任务,然而在某些场景,利用cancelled标志可能让任务陷入死循环。例如:生产者-消费者模式中,如果生产者生成速度超过消费者速度,那么生产者将阻塞,而此时消费者打算取消生成任务,消费者调用了生产者的cancel方法,消费者退出了,那么生产者永远也不会退出(因为生产者原创 2012-08-20 22:19:23 · 1296 阅读 · 0 评论 -
java线程停止【三】
之前介绍了两种简单的结束线程任务的方法,对于线程相互协作工作的应用场景,例如生成消费者模式中,生产者决定要停止生产了,生产者应该告诉消费者“我已经停止生产了,你不要等啦”。如上一篇,生产者可以中断消费者线程,但生产者并不知道消费者此时的消费速度,生产者必须等到消费者全部消费完或者直接中断(通常不是一个好主意),而且生产者并不拥有消费者的所有权,所以并不是一种行之有效的方式;还有一种比较简单且容易实原创 2012-08-30 22:08:53 · 1163 阅读 · 0 评论 -
闭锁CountDownLatch与栅栏CyclicBarrier
最近在看java并发相关的书籍,有一些同步的知识是平常不常用但是觉得会很有用的东西,这里参考别人的文章和自己的理解,将闭锁和栅栏的用途与区别简单描述一下。闭锁:一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。即,一组线程等待某一事件发生,事件没有发生前,所有线程将阻塞等待;而事件发生后,所有线程将开始执行;闭锁最初处于封闭状态,当事件发生后闭锁将被原创 2012-08-14 22:34:53 · 11730 阅读 · 2 评论 -
ThreadLocal源码分析
ThreadLocal, 字面意义上就是本地Thread,然而,ThreadLocal并非Thread,而是Thread的局部变量,也许把它命名为ThreadLocalVariable更容易让人理解一些。 ThreadLocal用于存储一些线程相关的局部变量,使用非常方便,尤其是在一些已经成型的项目中增加新功能,需要从入口传递参数,并在后端取参处理的情景。 看一些技术书,浅显的原创 2014-02-24 18:09:16 · 884 阅读 · 0 评论