|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 smallFishBug 于 2017-6-24 16:32 编辑
wait方法属于Object类的方法
join方法具有使线程排队运行的作用,
join与synchronized的区别是:
join在内部使用wait()方法等待,synchronized使用的是“对象监视器”原理为同步
方法join(long)与sleep(long)的区别
join(long)方法具有释放锁的特点
Sleep(long)方法不释放锁的特点
类ThreadLocal的使用
变量值的共享可以使用public static变量的形式
如果实现每个线程都有自己的共享变量,就用 ThreadLocal类
类ThreadLocal主要解决的就是每个线程绑定自己的值,可以将ThreadLocal类比喻成全局存放数据的盒子,盒子中可以储存每个线程的私有数据
1、使线程变量具有隔离性
ThreadLocal<T> T指 泛型类
方法:
Protected T initialValue() 返回此线程局部变量的当前线程的“初始值” 通常为null 线程第一次使用get()方法时访问变量时将调用此方法,但是如果线程值钱调用了set()方法,则不会再调用initialValue方法,通常每个线程最多调用一次,但是调用remove()后,线程可再次调用initialValue()
Get() 返回线程局部变量的当前线程的值 如果变量没有当前的值,则先调用initialValue()方法返回的值
Set(T value) 将此线程局部变量的当前副本中的值设置为指定值
Remove() 移除此线程局部变量当前线程的值
类InheritableThreadLocal的使用
作用:可以在子线程中取得父线程继承下来的值
方法:
Protected childValue(T parentValue)
在启动子线程之前,从父线程内部自动调用此方法 可重写
可在子线程返回parentValue父值, 重写的话,可以有其他行为
ReentrantLock类
接口 lock
所有已知实现类:
ReentratLock Condition readwriteLock
方法:
newCondition() 返回绑定到此Lock实例的新Condition实例
Lock lock= new ReentrantLock() lock.lock()锁住 lock.unlock()释放对象
Lock是锁住后面部分代码,并非对象,有多个被lock方法,线程A调用method1(),线程B可以调用method2(),互不影响
Condition接口
Void await() 此condition实例的锁以原子方式释放 造成当前线程在接到信号或被中断之前一直处于等待状态
在condition.await()方法调用之前要调用lock.lock()代码获得同步监视器
相当于对lock实例进行筛选,打上印记,利用自身的await(),signalAll(),signal()等方法对lock实例进行操作
当condition的await()被调用时,释放当前线程占用的锁
会释放,其他线程执行Condition.signal(),之前的线程会重新获得锁,继续执行
|
评分
-
查看全部评分
|