- 浏览: 94796 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wataxi:
第7, 8个说的好像不对,
#dd a{
te ...
我理解中的css样式表 -
show_time:
基本语句很详细呀
oracle辅导(1--3) -
yinxiangbing:
不错,很详细。。。
Struts-config.xml配置文件讲解 -
zhuyingya87:
真的不错。。
Struts-config.xml配置文件讲解 -
被判孤寂:
语句还可以,满全面。如果加上实例和图片,就更直观了
oracle辅导(1--1)
*1: 名为DoCallStuff类实现了Callable,String将是call方法的返回值类型。例子中用了String,但可以是任何Java类。
*2: call方法的返回值类型为String,这是和类的定义相对应的。并且可以抛出异常。
*3: call方法可以抛出异常,如加重的斜体字所示。
以下是调用DoCallStuff的主程序。
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class Executor {
public static void main(String[] args){
//*1
DoCallStuff call1 = new DoCallStuff(0);
DoCallStuff call2 = new DoCallStuff(1);
DoCallStuff call3 = new DoCallStuff(2);
//*2
ExecutorService es = Executors.newFixedThreadPool(3);
//*3
Future future1 = es.submit(call1);
Future future2 = es.submit(call2);
Future future3 = es.submit(call3);
try {
//*4
System.out.println(future1.get());
//*5
Thread.sleep(3000);
System.out.println("Thread 2 terminated? :" + future2.cancel(true));
//*6
System.out.println(future3.get());
} catch (ExecutionException ex) {
ex.printStackTrace();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
*1: 定义了几个任务
*2: 初始了任务执行工具。任务的执行框架将会在后面解释。
*3: 执行任务,任务启动时返回了一个Future对象,如果想得到任务执行的结果或者是异常可对这个Future对象进行操作。Future所含的值必须跟Callable所含的值对映,比如说例子中Future对印Callable
*4: 任务1正常执行完毕,future1.get()会返回线程的值
*5: 任务2在进行一个死循环,调用future2.cancel(true)来中止此线程。传入的参数标明是否可打断线程,true表明可以打断。
*6: 任务3抛出异常,调用future3.get()时会引起异常的抛出。
运行Executor会有以下运行结果:
looping....
Task done. //*1
looping....
looping....//*2
looping....
looping....
looping....
looping....
Thread 2 terminated? :true //*3
//*4
java.util.concurrent.ExecutionException: java.lang.Exception: Callable terminated with Exception!
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:205)
at java.util.concurrent.FutureTask.get(FutureTask.java:80)
at concurrent.Executor.main(Executor.java:43)
…….
*1: 任务1正常结束
*2: 任务2是个死循环,这是它的打印结果
*3: 指示任务2被取消
*4: 在执行future3.get()时得到任务3抛出的异常
lock接口
实现类ReentrantLock
我们可以用lock对象,来对临界资源加锁调用lock对象的lock()方法,使得没有得到锁的线程阻塞,解锁则调用lock对象的unlock()方法,并且释放锁,只有获得lock对象才能访问临界资源,如果没有获得lock对象,就会进入lock对象的锁池。trylock()方法会返回布尔值,这个方法是用来判断这个锁对象是不是已经被线程获取,如果返回值为true,则会直接获得这个锁对象,如果返回false,线程不会阻塞还会继续运行。
Lock lock=new ReentrantLock();
publci void test(){
try{
if(lock.trylock){//判断锁是否已经分配出去
lock.lock();
//如果锁没有被分配,就会获得锁,没有得到锁,就阻塞
}else{
......
}
.....//需要加锁的临界资源。
}finally{
lock.unlock();//解锁,释放锁。
}
}
ReadWriteLock读写锁接口
ReentrantReadWriteLock是ReadWriteLock的实现类。
ReentrantReadWriteLock的Lock readLock()方法会分配读锁对象,读锁可以分配多个线程,但是在分配读锁后所有读锁释放前,写锁是不能被分配的。
ReentrantReadWriteLock的Lock writeLock()方法会分配写锁对象,且只能分配给一个线程,在分配写锁后,在写锁释放前,读锁是不能被分配。
Condition接口和实现类
Condition是等待对列的对象,它是通过lock对象的newCondition()方法得到的
Condition实现类的await()替代了wait()方法。
notify(),notifyAll() 在JDK5.0中已经用Condition实现类的signal() ,signalAll()方法替换掉了,在JDK5.0中,可以使用多个等待队来存放等待的线程,并对线程进行分类。
Queue接口(Collection的子接口,队列接口)
LinkedList也实现了这个在JDK5.0中的新接口Queue,并且这个类自动的实现了生产者和消费者的同步。
JDK5.0的高级同步
Semaphore类(信号量)也就是可以向线程分配许可证,指定许可证数量可以实现多线程的同步。
Semaphore s=new Semaphore(4);
//可以分配4个许可证,许可证都被分配出去时,得不到许可证的线程就会阻塞。
Semaphore类的acquire(…)方法,获得许可证。Semaphore类的release(…) 方法,释放一个许可证,也有相应的方法指定释放和获得许可证的数量的方法。
CountDownLatch类
CountDownLatch中有个计数器,访问这个类的对象就会从计数器中减一,countDown()方法会将原有的设置的计数器值减一,当countdown计数器为零时会使放所有await()的线程。
CyclicBarrier类
CyclicBarrier和CountDownLatch比较相似
CyclicBarrier在构造时给出线程数,只有等待的线程数到了构造方法中指定的数量,当最后一个线程等待后,所有的线程都会被释放,这个类是一个多线程汇合的工具。
Exchanger类,用exchange()方法可以使两个线程间相互交换对象,在两线程的同步点,等待第二个线程。在同步点时,交换对象,并同时被释放。
评论
不过有的地方能多说一点儿就更完美了!
比如:
T t = new T();//是不行的.
对于泛型类型T,不能保证总会存在一个空参构造方法,因此编译器直接禁止了對象創建.
T[] tArray = new T[10];//是不行的!
這個沒找到好點兒的理由!只是编译器不让创建泛型数组.
不过博主很利害了!
发表评论
-
corejava辅导(2--3)
2008-12-13 08:37 1110java中的数组Array Java中的每一个数组就是都是 ... -
corejava辅导(17--2)
2008-12-03 17:51 835处理自定义注释的类 例: import java.lang.r ... -
corejava辅导(17--1)
2008-12-03 17:48 681JAVA5.0 的注释 (Annotation) 描述代码 ... -
corejava辅导(16--4)
2008-12-03 17:46 772泛型方法的定义 把数组拷贝到集合时,数组的类型一定要和集合 ... -
corejava辅导(16--3)
2008-12-03 17:44 737java5.0中的泛型 说明 增强了java的类型安全 ... -
corejava辅导(16--2)
2008-12-03 17:29 693可变长的参数 在java5.0中,可以使用一种变长参数,也就是 ... -
corejava辅导(16--1)
2008-12-03 17:25 832Java5.0的新特性 自动装箱和自动拆箱 自动封箱和 ... -
corejava辅导(15)
2008-12-03 17:18 714反射 反射,在运行时,动态分析或使用一个类进行工作。 类对 ... -
corejava辅导(14--4)
2008-12-03 17:15 776UDP socket 这种信息传输方式相当于传真,信息打包, ... -
corejava辅导(14--3)
2008-12-03 17:13 766TCP Socket TCP是Tranfer Con ... -
corejava辅导(14--2)
2008-12-03 17:10 658JAVA网络编程 网络基础知识 网络编程的目的就是指直 ... -
corejava辅导(14--1)
2008-12-03 17:08 670ObjectInputStream和ObjectOutputS ... -
corejava辅导(13--2)
2008-12-03 17:00 780BufferInputStream和BufferOutputS ... -
corejava辅导(13--1)
2008-12-03 16:56 764Java中的I/O 使用I/O流访问file中的内容。 J ... -
corejava辅导(12--3)
2008-12-03 16:53 714基本输入输出所使用的类的介绍: FileInputSt ... -
corejava辅导(12--2)
2008-12-03 16:51 703处理跨平台性 对于命令:File f2=new file( ... -
corejava辅导(12--1)
2008-12-03 15:56 737死锁问题 多线程不释放自己拥有的锁标记,而想申请其他线 ... -
corejava辅导(11--2)
2008-12-03 15:52 725共享数据的并发处理 多线程同时并发访问的资源叫做临界资源 ... -
corejava辅导(11--1)
2008-12-03 15:46 732Java多线程编程 进程,即运行中的程序,多任务操作系统中 ... -
corejava辅导(10--2)
2008-12-03 15:18 673在Java的图形编程中,所有动作(事件)都已经提供了相应的事件 ...
相关推荐
赠送jar包:aliyun-java-sdk-core-4.3.9.jar; 赠送原API文档:aliyun-java-sdk-core-4.3.9-javadoc.jar; 赠送源代码:aliyun-java-sdk-core-4.3.9-sources.jar; 赠送Maven依赖信息文件:aliyun-java-sdk-core-...
赠送jar包:aws-java-sdk-core-1.11.939.jar 赠送原API文档:aws-java-sdk-core-1.11.939-javadoc.jar 赠送源代码:aws-java-sdk-core-1.11.939-sources.jar 包含翻译后的API文档:aws-java-sdk-core-1.11.939-...
赠送jar包:aliyun-java-sdk-core-4.5.30.jar 赠送原API文档:aliyun-java-sdk-core-4.5.30-javadoc.jar 赠送源代码:aliyun-java-sdk-core-4.5.30-sources.jar 包含翻译后的API文档:aliyun-java-sdk-core-4.5....
赠送jar包:aliyun-java-sdk-core-4.5.10.jar; 赠送原API文档:aliyun-java-sdk-core-4.5.10-javadoc.jar; 赠送源代码:aliyun-java-sdk-core-4.5.10-sources.jar; 赠送Maven依赖信息文件:aliyun-java-sdk-core-...
aliyun-java-sdk-core-3.2.3 aliyun-java-sdk-core-3.2.3aliyun-java-sdk-core-3.2.3
ckeditor-java-core-3.5.3-javadoc.chm
Core Java Volume I--Fundamentals(10th) 英文epub 第10版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
赠送jar包:aws-java-sdk-core-1.11.939.jar; 赠送原API文档:aws-java-sdk-core-1.11.939-javadoc.jar; 赠送源代码:aws-java-sdk-core-1.11.939-sources.jar; 赠送Maven依赖信息文件:aws-java-sdk-core-1.11....
赠送jar包:aws-java-sdk-core-1.12.160.jar; 赠送原API文档:aws-java-sdk-core-1.12.160-javadoc.jar; 赠送源代码:aws-java-sdk-core-1.12.160-sources.jar; 赠送Maven依赖信息文件:aws-java-sdk-core-1.12....
ckeditor-java-core-3.5.3.jar ckeditor-java-core-3.5.3.jar ckeditor-java-core-3.5.3.jar ckeditor-java-core-3.5.3.jar ckeditor-java-core-3.5.3.jar
aliyun-java-sdk-core-3.4.0.jar
Core Java Volume II--Advanced Features(10th) 英文azw3 第10版
赠送jar包:aliyun-java-sdk-core-4.3.9.jar; 赠送原API文档:aliyun-java-sdk-core-4.3.9-javadoc.jar; 赠送源代码:aliyun-java-sdk-core-4.3.9-sources.jar; 赠送Maven依赖信息文件:aliyun-java-sdk-core-...
赠送jar包:aliyun-java-sdk-core-4.5.10.jar; 赠送原API文档:aliyun-java-sdk-core-4.5.10-javadoc.jar; 赠送源代码:aliyun-java-sdk-core-4.5.10-sources.jar; 赠送Maven依赖信息文件:aliyun-java-sdk-core-...
SDK工具包中一共包含了2个类库,一个aliyun-java-sdk-core包,另外一个是alicom-dysms-api包
赠送jar包:aliyun-java-sdk-core-4.5.30.jar; 赠送原API文档:aliyun-java-sdk-core-4.5.30-javadoc.jar; 赠送源代码:aliyun-java-sdk-core-4.5.30-sources.jar; 赠送Maven依赖信息文件:aliyun-java-sdk-core-...
aliyun-java-sdk-dysmsapi-1.0.0.ja jar aliyun sdk java core
Java核心技术第九版Java7,Mobi格式电子书。Core Java Volume I--Fundamentals (9th Edition)
在这个场景中,"aliyun-java-sdk-core-4.1.0.jar" 是一个Java版本的核心SDK,主要用于与阿里大于的各项服务进行交互,特别是短信发送功能。 一、阿里大于SDK核心功能 1. **身份验证**:SDK提供了基于AccessKey的...