
Java
aptentity
这个作者很懒,什么都没留下…
展开
-
Java多线程系列--“基础篇”01之 基本概念
http://www.cnblogs.com/skywang12345/p/3479024.html 多线程是Java中不可避免的一个重要主体。从本章开始,我们将展开对多线程的学习。接下来的内容,是对“JDK中新增JUC包”之前的Java多线程内容的讲解,涉及到的内容包括,Object类中的wait(), notify()等接口;Thread类中的接口;synchronized关键字。 注转载 2017-03-20 11:57:45 · 230 阅读 · 0 评论 -
LinkedHashMap
HashMap: put -> addEntry(新建一个Entry) get getEntry LinkedHashMap: put -> addEntry(重写) 新建一个Entry,然后将其加入header前 e.addBefore(header)转载 2017-03-23 21:20:20 · 228 阅读 · 0 评论 -
CopyOnWriteArrayList
1、CopyOnWriteArrayList位于java.util.concurrent包下,可想而知,这个类是为并发而设计的 2、CopyOnWriteArrayList,顾名思义,Write的时候总是要Copy,也就是说对于CopyOnWriteArrayList,任何可变的操作(add、set、remove等等)都是伴随复制这个动作的,后面会解读CopyOnWriteArrayList的底转载 2017-03-23 21:32:11 · 412 阅读 · 0 评论 -
ArrayList和Vector以及synchronizedList
ArrayList和Vector都是使用数组方式存储数据 区别大概就是Vector本身所有方法都是用synchronized修饰的,所以线程安全,而ArrayList没有 还有一个区别就是新增元素的时候Vector的增量是原来的一倍,而ArrayList增加原来的一半 public void ensureCapacity(int minCapacity) { modCount转载 2017-03-23 21:36:15 · 367 阅读 · 0 评论 -
Java多线程系列-多线程下的其他组件之CyclicBarrier、Callable、Future和FutureTask
CyclicBarrier 接着讲多线程下的其他组件,第一个要讲的就是CyclicBarrier。CyclicBarrier从字面理解是指循环屏障,它可以协同多个线程,让多个线程在这个屏障前等待,直到所有线程都达到了这个屏障时,再一起继续执行后面的动作。看一下CyclicBarrier的使用实例: public static class CyclicBarrierThread exte转载 2017-03-24 07:12:55 · 298 阅读 · 0 评论 -
Java多线程系列-多线程下的其他组件之CountDownLatch、Semaphore、Exchanger
前言 在多线程环境下,JDK给开发者提供了许多的组件供用户使用(主要在java.util.concurrent下),使得用户不需要再去关心在具体场景下要如何写出同时兼顾线程安全性与高效率的代码。之前讲过的线程池、BlockingQueue都是在java.util.concurrent下的组件,Timer虽然不在java.util.concurrent下,但也算是。后两篇文章将以例子的形式简单讲解转载 2017-03-24 07:14:36 · 214 阅读 · 0 评论 -
Java多线程系列-生产者/消费者模型
什么是生产者/消费者模型 一种重要的模型,基于等待/通知机制。生产者/消费者模型描述的是有一块缓冲区作为仓库,生产者可将产品放入仓库,消费者可以从仓库中取出产品,生产者/消费者模型关注的是以下几个点: 1、生产者生产的时候消费者不能消费 2、消费者消费的时候生产者不能生产 3、缓冲区空时消费者不能消费 4、缓冲区满时生产者不能生产 生产者/模型作为一种重要的模型,它的优点在于: 1、转载 2017-03-24 07:46:18 · 305 阅读 · 0 评论 -
Java多线程系列-Queue、BlockingQueue以及利用BlockingQueue实现生产者/消费者模型
Queue是什么 队列,是一种数据结构。除了优先级队列和LIFO队列外,队列都是以FIFO(先进先出)的方式对各个元素进行排序的。无论使用哪种排序方式,队列的头都是调用remove()或poll()移除元素的。在FIFO队列中,所有新元素都插入队列的末尾。 Queue中的方法 Queue中的方法不难理解,6个,每2对是一个也就是总共3对。看一下JDK API就知道了: 注意一点就转载 2017-03-24 07:49:44 · 478 阅读 · 0 评论 -
抽象类(abstract class)和接口(Interface)的区别
前言 抽象类(abstract class)和接口(Interface)是Java语言中对于抽象类定义进行支持的两种机制,赋予了Java强大的面向对象能力。二者具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstractclass和Interface的选择显得比较随意。其实,两者之间还是有很大的区别的。本文将对它们之间的区别进行剖析,并提供一个在二者之间进行选择的转载 2017-04-01 11:53:51 · 41349 阅读 · 7 评论 -
什么是依赖注入
只讲原理,不讲过程。 大多数面向对象编程语言,在调用一个类的时候,先要实例化这个类,生成一个对象。 如果你在写一个类,过程中要调用到很多其它类,甚至这里的其它类,也要“依赖”于更多其它的类,那么可以想象,你要进行多少次实例化。 这就是“依赖”的意思。 依赖注入,全称是“依赖注入到容器”, 容器(IOC容器)是一个设计模式,它也是个对象,你把某个类(不管有多少依赖关系)放入这个容器中,可以“转载 2017-03-27 10:10:20 · 5625 阅读 · 2 评论 -
HashMap存储结构浅析
1.hashmap是按照存储结构来讲是数组(散列桶)与链表的组合体. 2. 如何计算hashmap中的散列桶的位置。 首先hashcode的值是用来辅助计算散列桶的位置的。如何散列有不同的算法,比如%或 & (散列桶的length-1) hashmap内部实现会把hashcode的值通过移位等运算再加工一下,保证加工之后的值二进制串中的01分布更加均匀. 数组的index或散列桶转载 2017-03-23 21:07:05 · 3689 阅读 · 0 评论 -
Java:集合类详解
Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └WeakHashMap Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Element转载 2017-03-20 22:26:10 · 523 阅读 · 0 评论 -
Java多线程系列--“基础篇”04之 synchronized关键字
概要 本章,会对synchronized关键字进行介绍。涉及到的内容包括: 1. synchronized原理 2. synchronized基本规则 3. synchronized方法 和 synchronized代码块 4. 实例锁 和 全局锁 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3479202.html 1. syn转载 2017-03-20 13:01:18 · 178 阅读 · 0 评论 -
Java多线程系列--“基础篇”02之 常用的实现多线程的两种方式
概要 本章,我们学习“常用的实现多线程的2种方式”:Thread 和 Runnable。 之所以说是常用的,是因为通过还可以通过java.util.concurrent包中的线程池来实现多线程。关于线程池的内容,我们以后会详细介绍;现在,先对的Thread和Runnable进行了解。本章内容包括: Thread和Runnable的简介 Thread和Runnable的异同点 Threa转载 2017-03-20 12:07:24 · 229 阅读 · 0 评论 -
Java多线程系列--“基础篇”03之 Thread中start()和run()的区别
概要 Thread类包含start()和run()方法,它们的区别是什么?本章将对此作出解答。本章内容包括: start() 和 run()的区别说明 start() 和 run()的区别示例 start() 和 run()相关源码(基于JDK1.7.0_40) 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3479083.html转载 2017-03-20 12:11:07 · 232 阅读 · 0 评论 -
Java多线程系列--“基础篇”05之 线程等待与唤醒
概要 本章,会对线程等待/唤醒方法进行介绍。涉及到的内容包括: 1. wait(), notify(), notifyAll()等方法介绍 2. wait()和notify() 3. wait(long timeout)和notify() 4. wait() 和 notifyAll() 5. 为什么notify(), wait()等函数定义在Object中,而不是Thread中 转载转载 2017-03-20 13:07:00 · 214 阅读 · 0 评论 -
Java多线程系列--“基础篇”06之 线程让步
概要 本章,会对Thread中的线程让步方法yield()进行介绍。涉及到的内容包括: 1. yield()介绍 2. yield()示例 3. yield() 与 wait()的比较 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3479243.html 1. yield()介绍 yield()的作用是让步。它能让当前线程由“运行转载 2017-03-20 13:12:27 · 239 阅读 · 0 评论 -
Java多线程系列--“基础篇”07之 线程休眠
概要 本章,会对Thread中sleep()方法进行介绍。涉及到的内容包括: 1. sleep()介绍 2. sleep()示例 3. sleep() 与 wait()的比较 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3479256.html 1. sleep()介绍 sleep() 定义在Thread.java中。 slee转载 2017-03-20 13:14:42 · 276 阅读 · 0 评论 -
Java多线程系列--“基础篇”08之 join()
概要 本章,会对Thread中join()方法进行介绍。涉及到的内容包括: 1. join()介绍 2. join()源码分析(基于JDK1.7.0_40) 3. join()示例 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3479275.html 1. join()介绍 join() 定义在Thread.java中。 joi转载 2017-03-20 13:16:27 · 193 阅读 · 0 评论 -
Java多线程系列--“基础篇”09之 interrupt()和线程终止方式
概要 本章,会对线程的interrupt()中断和终止方式进行介绍。涉及到的内容包括: 1. interrupt()说明 2. 终止线程的方式 2.1 终止处于“阻塞状态”的线程 2.2 终止处于“运行状态”的线程 3. 终止线程的示例 4. interrupted() 和 isInterrupted()的区别 转载请注明出处:http://www.cnblogs.com/转载 2017-03-20 13:18:19 · 288 阅读 · 0 评论 -
Java多线程系列--“基础篇”10之 线程优先级和守护线程
概要 本章,会对守护线程和线程优先级进行介绍。涉及到的内容包括: 1. 线程优先级的介绍 2. 线程优先级的示例 3. 守护线程的示例 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3479982.html 1. 线程优先级的介绍 java 中的线程优先级的范围是1~10,默认的优先级是5。“高优先级线程”会优先于“低优先级线程”执转载 2017-03-20 13:26:53 · 250 阅读 · 0 评论 -
Java多线程系列--“基础篇”11之 生产消费者问题
概要 本章,会对“生产/消费者问题”进行讨论。涉及到的内容包括: 1. 生产/消费者模型 2. 生产/消费者实现 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3480016.html 1. 生产/消费者模型 生产/消费者问题是个非常典型的多线程问题,涉及到的对象包括“生产者”、“消费者”、“仓库”和“产品”。他们之间的关系如下:转载 2017-03-20 13:28:04 · 196 阅读 · 0 评论 -
使用System.setOut()
setOut()方法可以改变输出流 [java] view plain copy package java1200; //可以向文件里写数据 import java.io.FileNotFoundException; import java.io.PrintStream; public class RedirectOutputStream {转载 2017-04-14 21:48:15 · 11270 阅读 · 0 评论