- 浏览: 31741 次
- 性别:
- 来自: 北京
最新评论
-
Corwen:
INSERT ... ON DUPLICATE KEY UPD ...
mysql insert的几点操作(DELAYED 、IGNORE、ON DUPLICATE KEY UPDATE )
import java.util.ArrayList; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Semaphore; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /** *Java 5.0里新增加了4个协调线程间进程的同步装置,它们分别是:Semaphore,CountDownLatch,CyclicBarrier和Exchanger *Semaphore可以控制运行线程的个数 *Semaphore是一个用来管理资源池的工具,可以看成是个通行证,线程要想从资源池拿到资源必须先拿到通行证,如果线程暂时拿不到通告证,线程就会被阻断,进入等待状态. */ /** *使用Semaphore的关键技术点如下: *1.在构造Semaphore对象时,必须提供通行证的数目,如"newSemaphore(3)"将创建一个具有3个通行证的Semaphore对象,一旦该对象被创建,其通行证数量是不能改变的. *2.Semaphore的acquire方法取得一个通行证,如果通行证已经发完了,当前线程将进入等待状态,直到有其他线程释放了通行证. *3.Semaphore的release方法释放了资源池. */ public class SemaphoreTest { /** * 模拟资源池的类 * 只为池发放2个通行证,即同时只允许2个线程获得池中的资源 */ public static class Pool{ ArrayList<String> pool = null; //保存资源池中的资源 Semaphore pass = null; //通行证 Lock lock = new ReentrantLock(); public Pool(int size){ //初始化资源池 pool = new ArrayList<String>(); for(int i = 0; i < size; i++){ pool.add("Resource " + i); } //发送2个通行证 pass = new Semaphore(2); } public String get()throws InterruptedException{ //获取通行证,只有得到通行证后才能得到资源 System.out.println("Try to get a pass..."); pass.acquire(); System.out.println("Got a pass"); return getResource(); } private String getResource(){ lock.lock(); String result = pool.remove(0); System.out.println("资源 " + result + "被取走"); lock.unlock(); return result; } public void put(String resource){ //归还通行证,并那还资源 System.out.println("Released a pass"); pass.release(); releaseResource(resource); } private void releaseResource(String resource){ lock.lock(); System.out.println("资源 " + resource + " 被归还"); pool.add(resource); lock.unlock(); } } public static void testPool(){ //准备10个资源的资源池 final Pool aPool = new Pool(10); Runnable worker = new Runnable(){ @Override public void run() { String resource = null; try{ resource = aPool.get();//取得resource //用resource做工作 System.out.println("I finished on " + resource); Thread.sleep(500); System.out.println("I finished on " + resource); }catch(InterruptedException ex){ } aPool.put(resource); } }; //启动5个任务 ExecutorService service = Executors.newCachedThreadPool(); for(int i = 0; i<5; i++){ service.submit(worker); } service.shutdown(); } public static void main(String... args){ SemaphoreTest.testPool(); } }
发表评论
-
apache 中的EqualsBuilder和HashCodeBuilder
2012-05-04 10:27 991自动化hashCode()和equals() 问题产生:当需 ... -
Java 中的Double Check Lock
2012-05-03 10:53 1589对于多线程编程来说 ... -
JDK5.0新特性系列---11.4线程 Condition
2012-05-02 11:05 777import java.util.concurrent. ... -
JDK5.0新特性系列---11.6线程 BlockingQueue
2012-05-02 11:05 730importjava.util.concurrent. ... -
JDK5.0新特性系列---11.5.4线程 同步装置之Exchanger
2012-05-02 11:05 702/** * Exchanger让两个线程互换信息 ... -
JDK5.0新特性系列---11.5.2线程 同步装置之CountDownLatch
2012-05-02 11:05 796import java.util.concurrent ... -
JDK5.0新特性系列---11.2线程 任务执行架构
2012-05-03 10:54 838import java.util.concurrent. ... -
JDK5.0新特性系列---11.3线程 锁Lock
2012-05-03 10:54 765import java.util.concurrent. ... -
JDK5.0新特性系列---11.1线程 Callable和Future
2012-05-03 10:54 1181import java.util.concurrent. ... -
JDK5.0新特性系列---8.泛型编程
2012-04-28 08:58 820import java.util.ArrayList; ... -
JDK5.0新特性系列---10.监控与管理虚拟机
2012-04-28 08:58 859import java.lang.management ... -
JDK5.0新特性系列---9.注释功能Annotation
2012-04-28 08:58 784import java.lang.annotation. ... -
JDK5.0新特性系列---7.使用ProcessBuilder执行本地命令
2012-04-28 08:57 908import java.io.BufferedReade ... -
JDK5.0新特性系列---6.格式化输出
2012-04-28 08:57 586import java.util.Date; / ... -
JDK5.0新特性系列---5.可变长参数Varargs
2012-04-26 21:53 565/** * 在J2SE5.0之前,当传入到方法的参数 ... -
JDK5.0新特性系列---4.静态导入
2012-04-26 21:51 685/** *静态导入:是指可以import类的静态方法 ... -
JDK5.0新特性系列---3.枚举类型
2012-04-26 21:50 606/** *enum关键字表示枚举类型,它的作用相当于 ... -
JDK5.0新特性系列---2.新的for循环
2012-04-26 21:48 646import java.util.ArrayList; ... -
JDK5.0新特性---1.自动装箱和拆箱
2012-04-26 21:44 856/** * 基本类型的数据值可以直接赋给基本数据对象 ... -
JAVA移位运算符)
2012-04-20 13:32 823移位运算符就是在二 ...
相关推荐
jdk5.0新特性介绍
JDK5.0_下载-安装-配置
[浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part [浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part
jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-...
2.JDK5.0新特性.doc 2.JDK5.0新特性.doc
jdk-8u311-windows-x64.exe jdk-8u311-windows-x64.exe.zip jdk-8u311-windows-x64.exe jdk-8u311-windows-x64.exe.zip jdk-8u311-windows-x64.exe jdk-8u311-windows-x64.exe.zip jdk-8u311-windows-x64.exe jdk-8u...
jdk-6u39-windows-i586,jdk-6u39-windows-i586,jdk-6u39-windows-i586,jdk-6u39-windows-i586,jdk-6u39-windows-i586,jdk-6u39-windows-i586,jdk-6u39-windows-i586,jdk-6u39-windows-i586,jdk-6u39-windows...
JDK5.0新特性,视频教学课件,可用容易学
jdk-6u21-windows-x64 jdk-6u21-windows-x64 jdk-6u21-windows-x64 jdk-6u21-windows-x64 jdk-6u21-windows-x64 jdk-6u21-windows-x64 jdk-6u21-windows-x64 jdk-6u21-windows-x64 jdk-6u21-windows-x64 jdk-6u21-...
JDK5.0新特性 因为,在1.5版本中,对一个整数进行包装,使之成为一个Integer对象(即包装,boxing),然后加入到一个ArrayList中的做法被认为是没有必要的,反之,解包(unboxing)的做法也是没有必要的,这样的...
[浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part [浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part
浪曦 - JDK5.0新特性.part2
浪曦 - JDK5.0新特性.part3
[浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part [浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part
jdk5.0新特性 包括泛型,增强的for循环,自动的封箱和拆箱
jdk1.5以上版本中新增加的特性描述,带有代码例子让你很清晰的明白jdk的 常量 、枚举、 for each、反射等各种新的特性,相信需要的你,一定满足。
浪曦 - JDK5.0新特性.part5.rar
(1)jdk-8u301-linux-aarch64.rpm (2)jdk-8u301-linux-aarch64.tar.gz (3)jdk-8u301-linux-arm32-vfp-hflt.tar.gz (4)jdk-8u301-linux-i586.rpm (5)jdk-8u301-linux-i586.tar.gz (6)jdk-8u301-linux-x64....
浪曦 - JDK5.0新特性.part4.rar
jdk-8u131-windows-i586jdk-8u131-windows-i586jdk-8u131-windows-i586jdk-8u131-windows-i586jdk-8u131-windows-i586jdk-8u131-windows-i586jdk-8u131-windows-i586jdk-8u131-windows-i586jdk-8u131-windows-i586...