![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
j2se
文章平均质量分 81
jackyhungvip
这个作者很懒,什么都没留下…
展开
-
jvm的线程创建
在操作系统中,有两种不同的方法提供线程支持:用户层的用户线程,或内核层的内核线程。其中用户线程在内核之上支持,并在用户层通过线程库来实现。不需要用户态/核心态切换,速度快。操作系统内核不知道多线程的存在,因此一个线程阻塞将使得整个进程(包括它的所有线程)阻塞。由于这里的处理器时间片分配是以进程为基本单位,所以每个线程执行的时间相对减少。内核线程由操作系统直接支持。由操作系统内核创建、调度和管理。内...原创 2012-01-09 13:48:26 · 157 阅读 · 0 评论 -
jvm参数
作者:Ken WuEmail: ken.wug@gmail.com转载本文档请注明原文链接 http://kenwublog.com/docs/java6-jvm-options-chinese-edition.htm! 本文是基于最新的SUN官方文档Java SE 6 Hotspot VM Options编写的译文。主要介绍JVM中的非稳态选项及其使用说明。为了让读者明白每...原创 2014-03-03 13:47:50 · 66 阅读 · 0 评论 -
jvm参数配置
/usr/local/jdk/bin/java -Dresin.home=/usr/local/resin -server -Xms1800M -Xmx1800M -Xmn300M -Xss512K -XX:PermSize=300M -XX:MaxPermSize=300M -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=5 -XX:GCTime...原创 2014-03-03 13:48:05 · 61 阅读 · 0 评论 -
设计模式之不变模式(Immutable Pattern)分析
主要介绍编写不变类的主意事项:归纳一下设计不变类的 5 条规则: 1. 不提供任何修改对象的方法。2. 保证没有任何一个方法会被覆盖。3. 所有的域都是 final 的。 4. 所有的域都是 private 的。 5. 如果不变类内部包括可变的子对象,保证它绝对不会被其他代码获取引用。 实例:/** * @author Peter Wei * */publi...原创 2014-03-06 10:55:02 · 127 阅读 · 0 评论 -
浅谈JAVA ThreadPoolExecutor
基础 在我看来,java比C++的一个大好处就是提供了对多线程的支持(C++只有多线程的库,语言本身不包含线程的概念)。而其中我最爱用的就是ThreadPoolExecutor这个类,它实现了一个非常棒的thread pool。thread pool一般被用来解决两个问题:当处理大量的同步task的时候,它能够避免thread不断创建销毁的开销;而另外一个也许更重要的含义是,它其实表示了一个...原创 2014-03-12 09:37:32 · 99 阅读 · 0 评论 -
读取Properties文件的六种方法
1。使用java.util.Properties类的load()方法示例: InputStream in = lnew BufferedInputStream(new FileInputStream(name)); Properties p = new Properties(); p.load(in);2。使用java.util.ResourceBundle类的get...原创 2014-03-14 10:11:07 · 81 阅读 · 0 评论 -
从Java视角理解伪共享(False Sharing)
从Java视角理解系统结构连载, 关注我的微博(链接)了解最新动态从我的前一篇博文中, 我们知道了CPU缓存及缓存行的概念, 同时用一个例子说明了编写单线程Java代码时应该注意的问题. 下面我们讨论更为复杂, 而且更符合现实情况的多核编程时将会碰到的问题. 这些问题更容易犯, 连j.u.c包作者Doug Lea大师的JDK代码里也存在这些问题.MESI协议及RFO请求 从前一篇我们知道,...原创 2014-03-14 10:11:32 · 113 阅读 · 0 评论 -
从Java视角理解CPU缓存(CPU Cache)
从Java视角理解系统结构连载, 关注我的微博(链接)了解最新动态众所周知, CPU是计算机的大脑, 它负责执行程序的指令; 内存负责存数据, 包括程序自身数据. 同样大家都知道, 内存比CPU慢很多. 其实在30年前, CPU的频率和内存总线的频率在同一个级别, 访问内存只比访问CPU寄存器慢一点儿. 由于内存的发展都到技术及成本的限制, 现在获取内存中的一条数据大概需要200多个CPU周期(C...原创 2014-03-14 10:11:43 · 117 阅读 · 0 评论 -
从Java视角理解CPU上下文切换(Context Switch)
从Java视角理解系统结构连载, 关注我的微博(链接)了解最新动态在高性能编程时,经常接触到多线程. 起初我们的理解是, 多个线程并行地执行总比单个线程要快, 就像多个人一起干活总比一个人干要快. 然而实际情况是, 多线程之间需要竞争IO设备, 或者竞争锁资源,导致往往执行速度还不如单个线程. 在这里有一个经常提及的概念就是: 上下文切换(Context Switch). 上下文切换的...原创 2014-03-16 10:52:14 · 199 阅读 · 1 评论 -
流io 读
1. 关于InputStream.read() 在从数据流里读取数据时,为图简单,经常用InputStream.read()方法。这个方法是从流里每次只读取读取一个字节,效率会非常低。 更好的方法是用InputStream.read(byte[] b)或者InputStream.read(byte[] b,int off,int len)方法,一次读取多个字节。2. 关...原创 2014-03-03 13:47:30 · 62 阅读 · 0 评论 -
lock和lockInterruptibly
lockInterruptibly()允许在等待时由其他线程的Thread.interrupt()方法来中断等待线程而直接返回,这时是不用获取锁的,而会抛出一个InterruptException。而ReentrantLock.lock()方法则不允许Thread.interrupt()中断,即使检测到了Thread.interruptted一样会继续尝试获取锁,失败则继续休眠。只是在最后获取锁...原创 2014-03-03 13:47:17 · 479 阅读 · 0 评论 -
单个进程最大线程数
原文链接:http://jzhihui.iteye.com/blog/1271122 windows 操作系统中允许的最大线程数。 ===========================================================================默认情况下,一个线程的栈要预留1M的内存空间而一个进程中可用的内存空间只有2G,所以理论上一个...原创 2012-01-10 10:09:05 · 666 阅读 · 0 评论 -
简单的路径使用(转)
用JAVA获取文件,听似简单,但对于很多像我这样的新人来说,还是掌握颇浅,用起来感觉颇深,大常最经常用的,就是用JAVA的File类,如要取得c:/test.txt文件,就会这样用File file = new File("c:/test.txt");这样用有什么问题,相信大家都知道,就是路径硬编码,对于JAVA精神来说,应用应该一次成型,到处可用,并且从现实应用来讲,最终生成的应用也会部署到Wi...原创 2011-12-03 11:38:27 · 87 阅读 · 0 评论 -
Java Object Initialization Order - Know your JLS!
转自:http://www.danielschneller.com/2010/07/java-object-initialization-order-know.html Recently I came across an interesting problem whose solution eluded me at first glance. Consider these three ...原创 2012-10-20 21:41:31 · 71 阅读 · 0 评论 -
java 安全沙箱模型
起到第一道安全保障作用的”双亲委派类加载模型”双亲委派方式的类加载,指的是优先从顶层启动类加载器开始,自顶向下的方式加载类的模型(参见第一条类装载器体系结构)。这种模型的好处是,底层的类装载器装载的类无法与顶层类装载器装载的类相互调用。哪怕是同包下的类,只要他们不属于同一类装载器,都是相互隔绝的。这对一些有安全隐患的类起到了安全隔离的作用。使它不能冒充系统类来破坏程序正常运作。此外,不...原创 2012-02-22 21:15:10 · 80 阅读 · 0 评论 -
阻塞同步 lock
转自:http://blog.csdn.net/chen77716/article/details/6641477 前文(深入JVM锁机制-synchronized)分析了JVM中的synchronized实现,本文继续分析JVM中的另一种锁Lock的实现。与synchronized不同的是,Lock完全用Java写成,在java这个层面是无关JVM实现的。在java.util.c...原创 2013-05-03 08:39:27 · 233 阅读 · 0 评论 -
阻塞同步synchronized
转自:http://blog.csdn.net/chen77716/article/details/6618779 目前在Java中存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容,其作者是大名鼎鼎的并发专家Doug Lea。本文并不比较synchronized与Lock孰优孰劣,只是介绍二者的实现原理。 数据同步需要依赖锁,那...原创 2013-05-03 08:40:21 · 1264 阅读 · 0 评论 -
关于中断处理
在历史上,Java试图提供过抢占式限制中断,但问题多多,例如前文介绍的已被废弃的Thread.stop、Thread.suspend和 Thread.resume等。另一方面,出于Java应用代码的健壮性的考虑,降低了编程门槛,减少不清楚底层机制的程序员无意破坏系统的概率。 如今,Java的线程调度不提供抢占式中断,而采用协作式的中断。其实,协作式的中断,原理很简单,就是轮询某个表示中断的标...原创 2013-05-03 08:41:27 · 126 阅读 · 0 评论 -
wait和notify机制
Wait-Notify机制可以说是实现阻塞操作较为高效的一种方式。典型的Wait-Notify场景一般与以下内容相关1.状态变量(State Variable)当线程需要wait的时候,总是因为一些状态不满足导致的。如往BlockQueue里面加入元素已满的时候。2.条件断言(Condition Predicate)当线程确定是否进入wait或者从notify中醒来的时候是...原创 2014-03-03 13:47:04 · 77 阅读 · 0 评论 -
Java多线程同步如何从JVM的角度体会
我们在使用Java多线程同步的时候需要了解很多的知识,其中Java多线程同步机制实际上是靠锁的概念来控制的。这个问题就需要我们引起注意,那么在Java程序当中,锁是如何体现的呢? 让我们从JVM的角度来看看锁这个概念: 在Java程序运行时环境中,JVM需要对两类线程共享的数据进行协调: 1)保存在堆中的实例变量 2)保存在方法区中的类变量 ...原创 2014-03-18 20:20:42 · 127 阅读 · 0 评论