您的位置:首页 > 其它

Join() 方法 & ThreadLocal 类的使用

2018-02-06 15:04 375 查看

方法 Join 的使用

方法 Join 的使用
join joinlong方法

join 与 synchronized 的区别

joinlong 与 sleeplong 的区别

类 ThreadLocal InheritableThreadLocal 的使用
ThreadLocal 类

InheritableThreadLocal

join() & join(long)方法

join()作用:在 A 线程中调用了 B 线程的 join() 方法时,表示只有当 B 线程执行完毕时, A 线程才能继续执行

join(long)作用:如果 A 线程中调用 B 线程的 join(10),则表示 A 线程会等待 B 线程执行10毫秒,10毫秒过后,A、B线程并行执行

注意:join(0)等价于join()

何时调用:join 方法必须在线程 start 方法调用之后调用才有意义。

join 与 synchronized 的区别:

join 在内部使用 wait() 方法进行等待,而 synchronized 使用的是”对象监视器“原理作为同步

join(long) 与 sleep(long) 的区别:

join(long) 会释放锁,而 sleep(long) 不释放锁

例如:A 线程中调用了 B 线程的 join 方法,则相当于 A 线程调用了 B 线程的 wait 方法,调用之后 A 线程就会进入阻塞状态(释放 A 线程的锁),当 B 线程执行完(或者到达等待时间),B 线程会自动调用自身的 notifyAll 方法唤醒 A 线程,从而达到同步的目的。

类 ThreadLocal & InheritableThreadLocal 的使用

ThreadLocal 类

主要解决的是:每个线程绑定自己的变量(存储每个线程的私有数据)。

get():取数据

set():存数据

InheritableThreadLocal

主要解决的是:可以在子线程中取得父线程继承下来的值。

注意:如果子线程在取得值的同时,主线程将 InheritableThreadLocal 中的值进行更改,那么子线程取得的值还是旧值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐