Jdk1.5中的多线程。
主要是在java.util.concurrent包中 ,其中几个重要的类对比如下
5.0 1.4
ExecutorService 取代 Thread
Callable Future 取代 Runnable
Lock 取代 Synchronized
SignalAll 取代 notifyAll()
await() 取代 wait()
Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务。Callable和Runnable有几点不同:
Callable规定的方法是call(),而Runnable规定的方法是run().
Callable的任务执行后可返回值,而Runnable的任务是不能返回值的。
call()方法可抛出异常,而run()方法是不能抛出异常的。
Future对象可以获得线程运行的返回值。就是运行Callable接口后得到的结果
运行Callable任务可拿到一个Future对象,通过Future对象可了解任务执行情况,可取消任务的执行,还可获取任务执行的结果。
其中几个重要的方法:
Isdome() ------------------判断该线程是否已经正常结束
isCannel()-----------------判断该线程已经退出
cannel()--------------------退出该线程,用于一些死线程的退出
get()------------------------获得所要返回的结果
public class DoCallStuff implements Callable{ // *1
private int aInt;
public DoCallStuff(int aInt) {
this.aInt = aInt;
}
public String call() throws Exception { //*2
boolean resultOk = false;
if(aInt == 0){
resultOk = true;
} else if(aInt == 1){
while(true){ //infinite loop
System.out.println("looping....");
Thread.sleep(3000);
}
} else {
throw new Exception("Callable terminated with Exception!"); //*3
}
if(resultOk){
return "Task done.";
} else {
return "Task failed";
}
}
}
*1: 名为DoCallStuff类实现了Callable,String将是call方法的返回值类型。例子中用了String,但可以是任何Java类。
*2: call方法的返回值类型为String,这是和类的定义相对应的。并且可以抛出异常。
*3: call方法可以抛出异常,如加重的斜体字所示。
分享到:
相关推荐
### Java分布式应用学习笔记04:JDK的并发包的集合总结 在深入探讨Java并发包之前,我们先简要回顾一下并发与多线程的基本概念。并发是指多个任务同时进行,而多线程则是实现并发的一种方式。Java平台提供了丰富的...
4. **多线程**:Java提供了丰富的多线程支持,包括Thread类、Runnable接口以及并发包中的工具类。Java 7在并发编程方面也有所增强,例如Fork/Join框架用于并行计算。 5. **字符串处理**:Java 7在字符串处理上增加...
### Java分布式应用学习笔记06浅谈并发加锁机制分析 #### 1. 前言 在深入探讨Java中的并发加锁机制之前,我们有必要回顾一下多线程环境下的一些基本概念和技术。之前的多线程调度、并发调度以及线程加锁安全等内容...
5. **内存模型和并发**:Java内存模型(JMM)定义了线程之间的可见性和同步,而并发包(java.util.concurrent)提供了高级并发工具。源码解析可以揭示如何实现高效、安全的并发编程。 6. **异常处理和反射**:源码...
### Java分布式应用学习笔记之JDK并发包的集合总结 #### 一、引言 在Java编程中,标准集合框架提供了丰富的容器类型如`HashMap`、`ArrayList`等,但这些容器在多线程环境中使用时,存在着线程安全问题。例如,除了...
第五章涉及多线程和Java并发包(JUC)。多线程使程序能同时执行多个任务,可以通过继承Thread、实现Runnable或使用ExecutorService来创建。Thread类提供了线程控制方法,如设置优先级、命名和线程礼让。线程的生命...
Java并发编程相关的内容,并发包源码分析等 集合框架 Java集合框架,并发容器,同步容器等 IO框架 Java基础字节流 字符流 NIO等 Java8 Java8语言的行为参数化和流编程等 Java虚拟机 Java虚拟机相关,内存模型,类...