JDK1.5多线程复习概要

1, 新的三个包:
java.util.concurrent,java.util.concurrent.atomic,java.util.concurrent.locks
java.util.concurrent 包含了常用的多线程工具,是新的多线程工具的主体.
java.util.concurrent.atomic 包含了不用加锁情况下就能改变值的原子变量.
java.util.concurrent.locks 包包含锁定的工具.

2,Callable和Future接口
Callable 是类似于Runnable 的接口,Callable 和Runnable 有几点不同
Callable 规定的方法是call(),而Runnable 规定的方法是run().
Callable 的任务执行后可返回值,而Runnable 的任务是不能返回值的。
call()方法可抛出异常,而run()方法是不能抛出异常的。
运行 Callable 任务可拿到一个Future 对象,通过Future 对象可了解任务
执行情况,可取消任务的执行,还可获取任务执行的结果.

3,新的任务执行架构
主要由三个接口和其相应的具体类组成
接口:Executor,ExecutorService,ScheduledExecutorService
Executor:执行Ruannable 类型的任务
ExecutorService 主要方法有 submit(task),invokeAll(collection of tasks),shutdown ();shutdownNow();isTerminated

();isShutdown();
ScheduledExecutorService:提供了按时间安排执行任务的功能.

4,Executors 类,Executors 的工具类来得到Executor 接口的具体对象.Executors提供一些static的方法
callable(Runnable task): 将Runnable 的任务转化成Callable 的任务.

5,Lockers和Condition接口
ReentrantLock是Lock的具体类,方法有
lock();tryLock();(有返回值并带有时间参数)unlock();注意该方法必须手动去解锁。
ReadWriteLock 接口。为了提高效率有些共享资源允许同时进行多个读的操作,但只允许一个写的操作。
readLock(): 返回一个读的lock
writeLock(): 返回一个写的lock, 此lock 是排他的。
Condition接口
await():使调用此方法的线程放弃锁定,进入睡眠直到被打断或被唤醒。
signal(): 唤醒一个等待的线程
signalAll():唤醒所有等待的线程
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值