
JDK学习
蓝天的IT生涯
这个作者很懒,什么都没留下…
展开
-
jar包中的 manifest详解
打开Java的JAR文件我们经常可以看到文件中包含着一个META-INF目录, 这个目录下会有一些文件,其中必有一个MANIFEST.MF,这个文件描述了该Jar文件的很多信息,下面将详细介绍MANIFEST.MF文件的内 容,先来看struts.jar中包含的MANIFEST.MF文件内容:Manifest-Version: 1.0Created-By: Apache Ant 1.5.1转载 2013-04-27 13:13:59 · 5309 阅读 · 0 评论 -
Java并发编程: 使用CountDownLatch协调子线程
本文将介绍CountDownLatch工具类,并采用这个工具类给出一个实例。 1. CountDownLatch工具类介绍 CountDownLatch是一个同步工具类,它允许一个或多个线程处于等待状态直到在其它线程中运行的一组操作完成为止。CountDownLatch用一个给定的计数来实现初始化。Await方法会一直处于阻塞状态,直到countDown方法调用而使当前计数达到零。转载 2013-07-31 12:50:04 · 835 阅读 · 0 评论 -
CyclicBarrier使用详解
Java代码 import java.util.Random; import java.util.concurrent.CyclicBarrier; /** *//** * CyclicBarrier类似于CountDownLatch也是个计数器, * 不同的是CyclicBarrier数的是调用了CyclicBarrier.await()进入等待转载 2013-07-31 19:35:07 · 927 阅读 · 0 评论 -
CountDownLatch 和 CyclicBarrier 的区别 简述
在网上看到很多人对于CountDownLatch和CyclicBarrier的区别简单理解为CountDownLatch是一次性的,而CyclicBarrier在调用reset之后还可以继续使用。那如果只是这么简单的话,我觉得CyclicBarrier简单命名为ResetableCountDownLatch好了,显然不是的。我的理解是,要从他们的设计目的去看这两个类。javadoc里面的描述是转载 2013-08-01 09:33:31 · 770 阅读 · 0 评论 -
最简实例说明wait、notify、notifyAll的使用方法
/*** 转载请注明作者longdick http://longdick.iteye.com**/ wait()、notify()、notifyAll()是三个定义在Object类里的方法,可以用来控制线程的状态。这三个方法最终调用的都是jvm级的native方法。随着jvm运行平台的不同可能有些许差异。 如果对象调用了w转载 2013-08-01 09:43:41 · 638 阅读 · 0 评论 -
CountDownLatch 和 CyclicBarrier 的运用及实现原理
CountDownLath和CyclicBarrier用法简介以及原理浅析原创 2013-08-02 19:17:51 · 3598 阅读 · 0 评论 -
java NIO
Selector:java nio无阻塞io实现的关键。 阻塞io和无阻塞io:阻塞io是指jdk1.4之前版本面向流的io,服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则会一直等待或者遭到拒绝请求,如果有的话,客户端会线程会等待请求结束后才继续执行。当并发量大,而后端服务或客户端处理数据慢时就会产生产生大量线程处于等待中,即上转载 2014-03-23 10:47:39 · 848 阅读 · 0 评论 -
AccessController类的doPrivileged
以下摘自JDKhttp://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/security/AccessController.html AccessController 类用于与访问控制相关的操作和决定。更确切地说,AccessController 类用于以下三个目的:基于当前生效的安全策略决定是允许还是拒绝对关键系统转载 2014-07-29 13:39:02 · 792 阅读 · 0 评论 -
HashMap 死锁分析
前言几个月前,上线了一个版本。但是上线了几个小时之后 CPU 突然暴增至99%,在网上搜了一下,多半是因为出现死循环问题了。就用 jstack dump 了当时的线程快照,发现这次死循环问题的起源是 HashMap 的 get()方法。之后先是迅速重启了服务,这样可以让服务先运行一段时间。然后立即修复了这个 bug并提交到 SVN。这次事故的原因是因为开发时没有注意到 Hash转载 2015-01-07 10:07:51 · 15293 阅读 · 8 评论