2015年6月8日
摘要: 1、Integerpublic static void main(String[]args) { Integer i=new Integer(1); System.out.println(i.intValue()); i=2; Syst... 阅读全文
posted @ 2015-06-08 14:58 飞机说之代码也疯狂 阅读(626) 评论(0) 推荐(0) 编辑
摘要: 根据Integer类得到Integer实例的方式:Integer instance=new Integer(int value);Integer instance=Integer.valueOf(int value);第一种方式每次当然都会产生一个新的实例,但是第二种方式就不尽然: 1 public... 阅读全文
posted @ 2015-06-08 13:52 飞机说之代码也疯狂 阅读(387) 评论(0) 推荐(0) 编辑
  2015年6月3日
摘要: 源代码变成可运行程序,需要经过编译——>加载——>运行几个阶段。final修饰的变量必须显性进行初始化。初始化有三种方式:(1)直接初始化(2)动态代码块(3)构造函数如果一个变量既被final修饰又被static修饰,那么这个变量一定要被初始化(满足final特性),另外要么直接初始化要么在静态代... 阅读全文
posted @ 2015-06-03 11:13 飞机说之代码也疯狂 阅读(1176) 评论(0) 推荐(0) 编辑
  2015年6月2日
摘要: 关键字volatile可以说是Java虚拟机提供的最轻量级的同步机制。当一个变量定义为volatile之后,它将具备两种特性,第一是保证此变量对所有线程的可见性,这里的“可见性”是指当一条线程修改了这个变量的值,新值对于其他线程来说是可以立即得知的。而普通变量不能做到这一点,普通变量的值在线程间传递... 阅读全文
posted @ 2015-06-02 14:07 飞机说之代码也疯狂 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 如果Java内存模型中所有的有序性都仅仅依靠volatile和synchronized来完成,那么一些操作将会变得很繁琐,但是我们在编写Java程序时并没有感觉到这一点,这是因为Java语言中有一个”先行发生(happens-before)“的原则。这个原则非常重要,它是判断数据是否存在竞争、线程是... 阅读全文
posted @ 2015-06-02 14:01 飞机说之代码也疯狂 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 原子性(Atomicity):由Java内存模型来直接保证的原子性变量操作包括read、load、assign、use、store和write,我们大致可以认为基本类型的访问读写是具备原子性的。如果应用场景还需要一个更大范围的原子性保证,Java内存模型还提供了lock和unlock操作来满足这种需... 阅读全文
posted @ 2015-06-02 13:55 飞机说之代码也疯狂 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 在Java中,所有实例域、静态域和数组元素存储在堆内存中,堆内存在线程之间共享。局部变量、方法定义参数和异常处理器参数不会在线程之间共享,他们不会有内存可见性问题,也不受内存模型的影响。Java线程之间的通信由Java内存模型(JMM)控制,JMM决定一个线程对共享变量的写入何时对另一个线程可见。从... 阅读全文
posted @ 2015-06-02 13:38 飞机说之代码也疯狂 阅读(116) 评论(0) 推荐(0) 编辑
  2015年6月1日
摘要: 任务和线程的启动很容易。在大多数时候,我们都会让它们运行直到结束,或者让它们自行停止。然而,有时候我们希望提前结束任务或线程,或者是因为用户取消了操作,或者应用程序需要快速关闭。要使任务和线程能安全、快速、可靠地停止下来,并不是一件容易的事。Java没有提供任何机制安全的终止线程,但它提供了中断(I... 阅读全文
posted @ 2015-06-01 13:47 飞机说之代码也疯狂 阅读(344) 评论(0) 推荐(0) 编辑
摘要: java.util.concurrentClass ArrayBlockingQueue阻塞队列是通过数组来实现的。队列的元素顺序是FIFO。队列的头部元素是等待最长时间的,队列的尾部元素是在队列中时间最短的。新元素插在队列的尾部,队列的检索从队列的头部开始。这是一个典型的有边界的缓存,在这个固定大... 阅读全文
posted @ 2015-06-01 12:14 飞机说之代码也疯狂 阅读(152) 评论(0) 推荐(0) 编辑
摘要: java.util.concurrentClass Exchanager用于实现两个线程之间元素的交换。每个线程在完成一定的事务后想与另外一个线程交换数据,第一个拿出数据的线程一直等待第一个拿出数据的线程,直到两个线程都拿出数据,才能进行数据交换。Exchanger对于遗传数学和管道设计应用也许很有... 阅读全文
posted @ 2015-06-01 11:48 飞机说之代码也疯狂 阅读(185) 评论(0) 推荐(0) 编辑