- 浏览: 31771 次
- 性别:
- 来自: 北京
最新评论
-
Corwen:
INSERT ... ON DUPLICATE KEY UPD ...
mysql insert的几点操作(DELAYED 、IGNORE、ON DUPLICATE KEY UPDATE )
import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; /** 从本节开始,主要介绍J2SE5.0与线程相关的新特性,新的线程类主要集中在java.util.concurrent 包中,本节实例将介绍如何使用java.util.concurrent.Callable和java.util.concurrent.Future类, 用Callable定义一个任务并启动它,然后用它的Future获取输出结果并停止它. 关键技术剖析: 关于Callable和Future类的关键技术如下: 1.Callable是类似于Runnable的接口,实现Callable接口的类和实现Runable的类都是可被其他线程 执行的任务. 2.Callable和Runnable的区别如下: 1)Callable定义的方法是call,而Runnable定义的方法是run. 2)Callable的call方法可以有返回值,而Runnable的run方法不能有返回值 3)Callable的call方法可抛出异常,而Runnable的run方法不能抛出异常 3.Future表示异步计算的结果,它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的 结果.Future的cancel方法取消任务的执行,有一个布尔参数,参数为true表示立即中断任务的执行,参数 为false表示允许正在运行的任务运行完成.Future的get方法等待计算完成,获取计算结果. */ public class CallableAndFuture { /**自定义一个任务类,实现Callable接口*/ public static class MyCallableClass implements Callable{ private int flag = 0; public MyCallableClass(int flag){ this.flag = flag; } public String call() throws Exception{ if(this.flag == 0){ return "flag = 0";//如果flag的值为0,则立即返回 } if(this.flag == 1){ //如果flag的值为1,做一个无限循环 try{ while(true){ System.out.println("looping..."); Thread.sleep(2000); } }catch(InterruptedException e){ System.out.println("Interrupted"); } return "false"; }else{ throw new Exception("Bad flag value!");//flag不为1或0,则抛出异常 } } } public static void main(String... args){ //定义3个Callable类型的任务 MyCallableClass task1 = new MyCallableClass(0); MyCallableClass task2 = new MyCallableClass(1); MyCallableClass task3 = new MyCallableClass(2); //创建一个执行任务的服务 ExecutorService es = Executors.newFixedThreadPool(3); try{ //提交并执行任务,任务启动时返回了一个Future对象 //如果想得到任务执行的结果或者是异常可对这个Future对象进行操作 Future future1 = es.submit(task1); //获得第一个任务的结果,如果调用get方法,当前线程会等待任务执行完毕后才往下执行 System.out.println("task1: " + future1.get()); Future future2 = es.submit(task2); //等待5秒后,再停止第二个任务,因为第二个任务进行的是无限循环 Thread.sleep(5000); System.out.println("task2 cancel: " + future2.cancel(true)); //获取第三个任务的输出,因为执行第三个任务会引起异常 //所以下面的语句将引起异常的输出 Future future3 = es.submit(task3); System.out.println("task3: " + future3.get()); }catch(Exception e){ System.out.println(e.toString()); } es.shutdown();//立即停止任务执行服务 } }
发表评论
-
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 732importjava.util.concurrent. ... -
JDK5.0新特性系列---11.5.4线程 同步装置之Exchanger
2012-05-02 11:05 703/** * Exchanger让两个线程互换信息 ... -
JDK5.0新特性系列---11.5.2线程 同步装置之CountDownLatch
2012-05-02 11:05 798import java.util.concurrent ... -
JDK5.0新特性系列---11.5.1线程 同步装置之Semaphore
2012-05-03 10:54 721import java.util.ArrayList; ... -
JDK5.0新特性系列---11.2线程 任务执行架构
2012-05-03 10:54 841import java.util.concurrent. ... -
JDK5.0新特性系列---11.3线程 锁Lock
2012-05-03 10:54 766import java.util.concurrent. ... -
JDK5.0新特性系列---8.泛型编程
2012-04-28 08:58 821import java.util.ArrayList; ... -
JDK5.0新特性系列---10.监控与管理虚拟机
2012-04-28 08:58 861import java.lang.management ... -
JDK5.0新特性系列---9.注释功能Annotation
2012-04-28 08:58 785import java.lang.annotation. ... -
JDK5.0新特性系列---7.使用ProcessBuilder执行本地命令
2012-04-28 08:57 909import java.io.BufferedReade ... -
JDK5.0新特性系列---6.格式化输出
2012-04-28 08:57 586import java.util.Date; / ... -
JDK5.0新特性系列---5.可变长参数Varargs
2012-04-26 21:53 566/** * 在J2SE5.0之前,当传入到方法的参数 ... -
JDK5.0新特性系列---4.静态导入
2012-04-26 21:51 685/** *静态导入:是指可以import类的静态方法 ... -
JDK5.0新特性系列---3.枚举类型
2012-04-26 21:50 607/** *enum关键字表示枚举类型,它的作用相当于 ... -
JDK5.0新特性系列---2.新的for循环
2012-04-26 21:48 646import java.util.ArrayList; ... -
JDK5.0新特性---1.自动装箱和拆箱
2012-04-26 21:44 858/** * 基本类型的数据值可以直接赋给基本数据对象 ... -
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-...
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...
2.JDK5.0新特性.doc 2.JDK5.0新特性.doc
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新特性[风中叶老师主讲]共10 part [浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part
浪曦 - JDK5.0新特性.part3
浪曦 - JDK5.0新特性.part2
JDK5.0新特性 因为,在1.5版本中,对一个整数进行包装,使之成为一个Integer对象(即包装,boxing),然后加入到一个ArrayList中的做法被认为是没有必要的,反之,解包(unboxing)的做法也是没有必要的,这样的...
[浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part [浪曦][原创]JDK5.0新特性[风中叶老师主讲]共10 part
jdk5.0新特性 包括泛型,增强的for循环,自动的封箱和拆箱
(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....
jdk1.5以上版本中新增加的特性描述,带有代码例子让你很清晰的明白jdk的 常量 、枚举、 for each、反射等各种新的特性,相信需要的你,一定满足。
浪曦 - JDK5.0新特性.part5.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...
浪曦 - JDK5.0新特性.part4.rar