- 浏览: 33204 次
- 性别:
- 来自: 北京
-
最新评论
-
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 1025自动化hashCode()和equals() 问题产生:当需 ... -
Java 中的Double Check Lock
2012-05-03 10:53 1648对于多线程编程来说 ... -
JDK5.0新特性系列---11.4线程 Condition
2012-05-02 11:05 813import java.util.concurrent. ... -
JDK5.0新特性系列---11.6线程 BlockingQueue
2012-05-02 11:05 794importjava.util.concurrent. ... -
JDK5.0新特性系列---11.5.4线程 同步装置之Exchanger
2012-05-02 11:05 747/** * Exchanger让两个线程互换信息 ... -
JDK5.0新特性系列---11.5.2线程 同步装置之CountDownLatch
2012-05-02 11:05 859import java.util.concurrent ... -
JDK5.0新特性系列---11.2线程 任务执行架构
2012-05-03 10:54 874import java.util.concurrent. ... -
JDK5.0新特性系列---11.3线程 锁Lock
2012-05-03 10:54 795import java.util.concurrent. ... -
JDK5.0新特性系列---11.1线程 Callable和Future
2012-05-03 10:54 1229import java.util.concurrent. ... -
JDK5.0新特性系列---8.泛型编程
2012-04-28 08:58 850import java.util.ArrayList; ... -
JDK5.0新特性系列---10.监控与管理虚拟机
2012-04-28 08:58 905import java.lang.management ... -
JDK5.0新特性系列---9.注释功能Annotation
2012-04-28 08:58 823import java.lang.annotation. ... -
JDK5.0新特性系列---7.使用ProcessBuilder执行本地命令
2012-04-28 08:57 944import java.io.BufferedReade ... -
JDK5.0新特性系列---6.格式化输出
2012-04-28 08:57 628import java.util.Date; / ... -
JDK5.0新特性系列---5.可变长参数Varargs
2012-04-26 21:53 599/** * 在J2SE5.0之前,当传入到方法的参数 ... -
JDK5.0新特性系列---4.静态导入
2012-04-26 21:51 739/** *静态导入:是指可以import类的静态方法 ... -
JDK5.0新特性系列---3.枚举类型
2012-04-26 21:50 642/** *enum关键字表示枚举类型,它的作用相当于 ... -
JDK5.0新特性系列---2.新的for循环
2012-04-26 21:48 688import java.util.ArrayList; ... -
JDK5.0新特性---1.自动装箱和拆箱
2012-04-26 21:44 887/** * 基本类型的数据值可以直接赋给基本数据对象 ... -
JAVA移位运算符)
2012-04-20 13:32 860移位运算符就是在二 ...
相关推荐
压缩包中的文件`jdk-1_5_0-windows-i586.exe`是Windows平台上的JDK 5.0安装程序,适用于32位系统。安装这个版本的JDK后,开发者可以体验到上述的新特性,并在项目中使用它们来提升代码质量。需要注意的是,随着Java...
JDK5.0是Oracle公司于2004年发布的一个重要版本,引入了许多新特性,对Java编程语言做了重大改进,提升了开发效率。要下载JDK5.0,首先访问Oracle的官方网站历史版本页面,或者通过互联网上的存档链接找到该版本的...
### JDK 5.0新特性详解 #### 一、自动装箱与自动拆箱 在JDK 5.0中,引入了一个非常实用的功能——自动装箱和自动拆箱,这极大地方便了开发者在处理基本数据类型和它们对应的封装类之间的转换。以前,我们可能需要...
[浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part [浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part
在Java开发领域,JDK 5.0是一个重要的里程碑,引入了多项显著的新特性,极大地提升了编程效率和代码质量。本文将深入探讨其中的四个关键特性:常量、枚举、for each循环(也称为增强型for循环)以及反射。 首先,让...
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 5.0中,Java引入了一系列重要的新特性,极大地提升了开发效率和代码的可读性。这些新特性包括自动包装和解包、增强的for循环、可变参数方法、printf风格的格式化输出、枚举类型以及静态导入等。 首先,自动...
[浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part [浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part
浪曦 - JDK5.0新特性.part2
浪曦 - JDK5.0新特性.part3
[浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part [浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part
在Java编程语言中,JDK 5.0的发布带来了一系列重要的新特性,极大地提升了开发效率和代码质量。其中,枚举(Enum)是引入的一个关键特性,它为表示固定集合中的常量提供了强大而安全的支持。这篇博客将深入探讨JDK ...
浪曦 - JDK5.0新特性.part5.rar
浪曦 - JDK5.0新特性.part4.rar
[浪曦][原创]JDK5.0新特性[风中叶老师主讲[浪曦][原创]JDK5.0新特性[风中叶老师主讲[浪曦][原创]JDK5.0新特性[风中叶老师主讲
[浪曦][原创]JDK5.0新特性[风中叶老师主讲][浪曦][原创]JDK5.0新特性[风中叶老师主讲][浪曦][原创]JDK5.0新特性[风中叶老师主讲]
本话题涉及三个不同版本的JDK:jdk-8u172-windows-x64.exe、jdk-8u251-windows-x64.exe以及jdk-14.0.1_windows-x64_bin.exe,分别对应Java 8的两个更新版本和Java 14的一个版本。 首先,让我们详细了解一下Java 8。...
在`JDK5.0新特性 (2)——反射.doc`中,你可能会学习到如何使用`java.lang.Class`对象来获取类信息,以及如何使用`java.lang.reflect`包中的`Constructor`、`Method`和`Field`类来操作类的构造器、方法和字段。...
### JDK 5.0 和 Tomcat 5.0 配置全攻略 #### 环境搭建背景 对于初入Java领域的新手来说,环境配置往往是一个不小的挑战。本篇文章旨在帮助那些在Java学习过程中遇到环境配置问题的朋友,提供一份详尽的JDK 5.0 和 ...
jdk-8u171下载。 JDK介绍 JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。 SE(J2SE),standard edition,标准版,是我们通常用的一个版本,从JDK 5.0开始,改名为Java SE。 EE(J2EE),enterprise ...