随笔分类 -  java

摘要:运算符优先级表优先级运算符结合性1() [] .从左到右2! +(正) (负) ~ ++ 从右向左3 / %从左向右4+(加) (减)从左向右5<< 从左向右6< <= = instanceof从左向右7== !=从左向右8&(按位与)从左向右9^从左向右10|从左向右11&&从左向右12||从左向... 阅读全文
posted @ 2016-01-18 23:39 vn2015 阅读(202) 评论(0) 推荐(0)
摘要:我们所看到的Java字节码是被封装在一个类文件中(扩展名为.class)。在这个教程中,就让我们来看看类文件的内部构造。数据是如何被写入类文件以及类文件的格式是怎样的呢,让我们首先图解看一看Java类文件。Java类文件结构示意图:上图描绘的Java类文件被分为了不同的区段,包括魔术码(magic)... 阅读全文
posted @ 2015-11-20 19:01 vn2015 阅读(1183) 评论(0) 推荐(0)
摘要:在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个... 阅读全文
posted @ 2015-11-19 23:20 vn2015 阅读(147) 评论(0) 推荐(0)
摘要:Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实... 阅读全文
posted @ 2015-11-19 23:00 vn2015 阅读(266) 评论(0) 推荐(0)
摘要:JDK5中添加了新的concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能。因为同步容器将所有对容器状态的访问都串行化了,这样保证了线程的安全性,所以这种方法的代价就是严重降低了并发性,当多个线程竞争容器时,吞吐量严重降低。因此Java5.0开始针对多线程并发访问设计,提供了并... 阅读全文
posted @ 2015-11-19 22:59 vn2015 阅读(146) 评论(0) 推荐(0)
摘要:想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadLocal的使用方法和实现原理。首先,本文先谈一下对ThreadLocal的理解,然后根据ThreadLocal类的源码分析了其实现原理和使用需要注意的地方,最后给出了两个应用场景。 以下是本文目录大纲: 一.对... 阅读全文
posted @ 2015-11-19 22:57 vn2015 阅读(149) 评论(0) 推荐(0)
摘要:在前面我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(LinkedList是双向链表,它实现了Dequeue接口)。 使用非阻塞队列的时候有一个很大问题就是:它不会对当前线程产生阻塞,那么在面对类似消费者-生产者的模型时,就必须额外地实现同步策略以及线程间唤醒策... 阅读全文
posted @ 2015-11-19 20:34 vn2015 阅读(135) 评论(0) 推荐(0)
摘要:本文的目录大纲: 一.Java中关于应用程序和进程相关的概念 二.Java中如何创建线程 三.Java中如何创建进程 若有不正之处,请多多谅解并欢迎批评指正。 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/dolphin0520/p/391351... 阅读全文
posted @ 2015-11-18 12:28 vn2015 阅读(138) 评论(0) 推荐(0)
摘要:Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制 在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。 Java语言是支持多线程的,为了解决线程并发... 阅读全文
posted @ 2015-11-15 14:53 vn2015 阅读(123) 评论(0) 推荐(0)
摘要:为了方便编写出线程安全的程序,Java里面提供了一些线程安全类和并发工具,比如:同步容器、并发容器、阻塞队列、Synchronizer(比如CountDownLatch)。今天我们就来讨论下同步容器。 以下是本文的目录大纲: 一.为什么会出现同步容器? 二.Java中的同步容器类... 阅读全文
posted @ 2015-11-15 13:53 vn2015 阅读(128) 评论(0) 推荐(0)
摘要:java 监视器 java 的内部锁 被称作 监视器锁 或者 监视器 ... 线程的监视器,即线程所持有的锁,也就是synchronized所关联的对象。 =================== 线程的互斥,即同一数据的访问,为了访问数据的同步,维护数据的原子性。 ======== 线程的... 阅读全文
posted @ 2015-11-15 13:24 vn2015 阅读(537) 评论(0) 推荐(0)
摘要:1. lock And sychronized 用sychronized修饰的方法或者语句块在代码执行完之后锁自动释放,而用Lock需要我们手动释放锁,所以为了保证锁最终被释放(发生异常情况),要把互斥区放在try内,释放锁放在finally内。 sychronized demo ... 阅读全文
posted @ 2015-11-13 12:19 vn2015 阅读(131) 评论(0) 推荐(0)
摘要:第一章介绍 (By wind5shy:http://blog.csdn.net/wind5shy) 进程:具有一定独立功能的程序关于某个数据集合上的一次运行活动。简单地说就是程序的一次执行,有自己独立的资源(内存空间,文件句柄等)。 线程:进程的一个实体,是CPU调度和分派的基本单位,是比进程更小的... 阅读全文
posted @ 2015-11-13 11:52 vn2015 阅读(223) 评论(0) 推荐(0)
摘要:线程安全 hashmap 非线程安全 concurrentHashmap为线程安全 arraylist 非线程安全 copyonwritearraylist 为线程安全 1. CopyOnWrite容器 CopyOnWrite容器即写时复制的容器。通俗的理解是当我们往一个容器添加元... 阅读全文
posted @ 2015-11-13 11:51 vn2015 阅读(147) 评论(0) 推荐(0)
摘要:1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但... 阅读全文
posted @ 2015-11-13 11:04 vn2015 阅读(136) 评论(0) 推荐(0)