一. Semaphore Semaphore能够控制同一时候訪问资源的线程个数, 比如: 实现一个文件同意的并发訪问数. Semaphore实现的功能就类似厕全部5个坑, 增加有十个人要上厕所, 那么同一时候仅仅能有5个人能够占用, 当5个人中的不论什么一个人离开后, 当中在等待的另外5个人中就有一个能够占用了. 另外等待的5个人中能够是随机获得优先机会, 也能够使依照先来后到的顺序获得机会, 这取决于构造Semaphore对象时传入的參数选项. public class SemaphoreTe…
一. 传统集合: 传统方式下的Collection在迭代集合时, 不同意对集合进行改动: public class CollectionModifyExceptionTest { public static void main(String[] args) { Collection<String> list = new ArrayList<String>(); list.add("aaa"); list.add("bbb"); list.ad…
线程同步工具类,CyclicBarrier日常开发较少涉及,这里只举一个例子,以做备注.N个人一块出去玩,相约去两个地方,CyclicBarrier的主要作用是等待所有人都汇合了,才往下一站出发. 1.效果如下: 2.实现代码: package com.amos.concurrent; import java.util.Random; import java.util.concurrent.CyclicBarrier; import java.util.concurrent.ExecutorSe…
反射(类的加载概述和加载时机) 反射(类加载器的概述和分类) 反射(反射概述) 反射(Class.forName()读取配置文件举例) 反射(通过反射获取带参构造方法并使用) 反射(通过反射获取成员变量并使用) 反射(通过反射获取方法并使用) 反射(通过反射越过泛型检查) 反射(通过反射写一个通用的设置某个对象的某个属性为指定的值) 反射(练习) 反射(动态代理的概述和实现) 设计模式(模版(Template)设计模式概述和使用) JDK5新特性(自己实现枚举类) JDK5新特性(通过enum实…
1.新知识普及 2. Semaphore工具类的使用案例 package com.java5.thread.newSkill; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Semaphore; /** * Semaphore工具类的使用案例 * 跟互斥锁有点相似,只是互斥锁只有一把,信号灯可以有多个 * Semapho…
参考博文 : 线程同步工具(一) 线程同步工具(二)控制并发访问多个资源 并发工具类(三)控制并发线程数的Semaphore 使用Semaphore模拟互斥锁 当一个线程想要访问某个共享资源,首先,它必须获得semaphore.如果semaphore的内部计数器的值大于0,那么semaphore减少计数器的值并允许访问共享的资源.计数器的值大于0表示,有可以自由使用的资源,所以线程可访问并使用它们. 另一种情况,如果semaphore的计数器的值等于0,那么semaphore让线程进入休眠状态一…
推荐好文: 线程同步工具(一) 线程同步工具(二)控制并发访问多个资源 并发工具类(三)控制并发线程数的Semaphore 简介 Semaphore是基于计数的信号量,可以用来控制同时访问特定资源的线程数量:可以通过设定一个阈值,基于此,多个线程争抢获取许可信号,做完自己的申请后归还,超过阈值后,线程申请许可信号将会被阻塞,直到有其他线程释放许可信号. Semaphore可以用来构建一些线程池,资源池之类的,比如数据库连接池,我们也可以创建计数为1的Semaphore,将其作为一种类似互斥锁的机…
前言 参考来源:<java并发编程实战> 同步工具类:根据工具类的自身状态来协调线程的控制流.通过同步工具类,来协调线程之间的行为. 可见性:在多线程环境下,当某个属性被其他线程修改后,其他线程能够立刻看到修改后的信息.典型的是用java内置关键字volatile,volatile变量可以让jvm知道这个变量是对所有线程共享的,jvm会做一定的同步工作,但不保证原子性. 这一部分内容可以看一下http://www.cnblogs.com/dolphin0520/p/3920373.html h…
 JDK5新特性目录导航: 自动拆装箱 Foreach 静态导入 可变参数 Var args 枚举 格式化输出 泛型 ProcessBuilder 内省 线程并发库(JUC) 监控和管理虚拟机 元数据 自动拆装箱 Java数据类型分两种:基本数据类型 和  引用数据类型(对象) 有时候我们需要将基本数据类型包装为对象进行处理 在JKD5以前我们的处理方式: //int 转换为 Integer int i = 10; Integer integer = new Integer(i); //Inte…
前两天看到jdk10试用版都出来了,才发现自己连1.8都没用过,对不同版本的jdk的新特性也不是太了解,所以想还是百度一下看看人家怎么说然后自己记录总结一下,其中jdk1.8的新特性可以到edu.51cto.com上学习一下,好了,现在说说jdk1.5的常用新特性吧. (9个) 泛型, foreach循环, 自动拆装箱, 类型安全的枚举, 可变参数, 内省(https://www.cnblogs.com/H_Razor/archive/2011/02/28/1967178.html), 静态导入…