![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
u012567219
这个作者很懒,什么都没留下…
展开
-
java中关键字volatile的作用
用在多线程,同步变量。 线程为了提高效率,将某成员变量(如A)拷贝了一份(如B),线程中对A的访问其实访问的是B。只在某些动作时才进行A和B的同步。因此存在A和B不一致的情况。volatile就是用来避免这种情况的。volatile告诉jvm, 它所修饰的变量不保留拷贝,直接访问主内存中的(也就是上面说的A) =========================分割线1==========转载 2013-11-20 17:43:19 · 618 阅读 · 0 评论 -
ThreadPoolExecutor运转机制详解
最近发现几起对ThreadPoolExecutor的误用,其中包括自己,发现都是因为没有仔细看注释和内部运转机制,想当然的揣测参数导致,先看一下新建一个ThreadPoolExecutor的构建参数: [java] view plaincopy public ThreadPoolExecutor(int corePoolSize,转载 2015-07-16 21:53:27 · 388 阅读 · 0 评论 -
Java并发编程:Callable、Future和FutureTask
Java并发编程:Callable、Future和FutureTask 在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。 而自从Jav转载 2015-07-16 21:32:07 · 361 阅读 · 0 评论 -
Java:对象的强、软、弱和虚引用
Blog: [url]http://zhangjunhd.blog.51cto.com/[/url] 1.对象的强、软、弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种转载 2014-12-18 18:29:32 · 379 阅读 · 0 评论 -
浅谈https\ssl\数字证书
http://www.cnblogs.com/P_Chou/archive/2010/12/27/https-ssl-certification.html 全球可信的SSL数字证书申请:http://cn.globalsign.com/ 在互联网安全通信方式上,目前用的最多的就是https配合ssl和数字证书来保证传输和认证安全了。本文追本溯源围绕这个模式谈一谈。转载 2014-03-27 22:33:05 · 425 阅读 · 0 评论 -
详细解析Java中抽象类和接口的区别
在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进 行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,两者转载 2014-03-12 22:23:26 · 377 阅读 · 0 评论 -
ConcurrentHashMap原理分析
集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发集合类型(concurrent,copyonright,queue)中的ConcurrentHashMap,让我们从原理上细致的了解它们,能够让我们在深度项目开发中获益非浅转载 2014-03-03 17:44:46 · 433 阅读 · 0 评论 -
栈溢出
虚拟机栈和本地方法栈有下面两种异常: 线程请求的栈深度大于虚拟机允许最大栈深度,抛StackOverflowError 虚拟机栈扩展时无法申请到足够的空间,抛OutOfMemoryError public class Test { public int stackLength = 1; public void stackLeak() { stackLength++; s原创 2013-11-22 09:35:57 · 626 阅读 · 0 评论 -
Java对象访问
对象访问会涉及到Java栈、Java堆、方法区这三个内存区域。 如下面这句代码: Object objectRef = new Object(); Object objectRef = new Object(); 假设这句代码出现在方法体中,"Object objectRef” 这部分将会反映到Java栈的本地变量中,作为一个reference类型数据出现。而“new O转载 2013-11-21 15:42:30 · 657 阅读 · 0 评论 -
java堆溢出
测试代码: import java.util.ArrayList; import java.util.List; public class Test { static class OOMObject{ } /** * @param args */ public static void main(String[] args) { // TODO Auto-gene原创 2013-11-21 17:45:26 · 789 阅读 · 0 评论 -
java VM Args调试参数
-Xms 堆最小空间 -Xmx 堆最大空间(将 -Xms和-Xmx设置相同,避免堆自动夸展) -XX:+HeapDumpOnOutOfMemoryError 虚拟机出现内存溢出异常时Dump出当前内存堆转储快照以便时候分析 -XX:+PrintGCDetails 打印gc详情 -XX:PermSize、-XX:MaxPermSize 用来控制方法区的大小,通常设置为相同的值 -Xss 栈原创 2013-11-21 16:45:11 · 1650 阅读 · 0 评论 -
Java虚拟机运行时的数据区
Java在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途、创建和销毁的时间,有的是随虚拟机进程的启动而创建,有的是 依赖用户线程线程的,随线程的开始和结束而创建和销毁。 Java虚拟机所管理的内存将会包括以下几个运行时数据区域 程序计数器(Program Counter Register) 它是一块较小的内存空间,它的作用可以看做转载 2013-11-21 13:00:11 · 691 阅读 · 0 评论 -
Java中的Copy-On-Write容器
聊聊并发-Java中的Copy-On-Write容器 Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyO转载 2016-02-09 12:53:34 · 513 阅读 · 0 评论