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 中的值进行更改,那么子线程取得的值还是旧值。
相关文章推荐
- Yii的CDbCriteria查询(以及使用$criteria->join出现问题的解决方法)
- 《多线程编程》学习之八:方法join()的使用、类ThreadLocal的使用
- SQL数据库使用JOIN的优化方法(转)
- shell中join命令的一些使用方法
- 在asp.net中使用ajax时出现的"'Sys' 未定义"的解决方法
- AT&T使用mul的方法。
- 多线程中暂停与挂起方法suspend sleep join 区别及使用指导 (原创)
- Java中final的使用方法【Java & The final keyword】
- 使用jfreechart画图时,出现错误 Null 'key' argument的解决方法
- c++ extern "C" 目的 原理 使用方法
- robots.txt作用&使用方法
- [转] "计算机无法访问,您可能没有权限使用网络资源.请与这台服务器的管理员联系以查明您是否有访问权限" 解决方法
- 使用fckEditor 出现"检测到有潜在危险的 Request.Form值"的解决方法! (网络整理)
- documen.all('')的使用方法
- Delphi&Excel的所有使用方法
- SQL数据库使用JOIN的优化方法
- "ASP.NET 管理实用工具"使用方法
- SQL还原数据库时发生错误,"因为数据库正在使用,所以未能获得对数据库的排它访问权。"解决方法。
- 黑莓快捷辅助工具,"Quick wheel"正确安装顺序及使用方法
- "在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的。如果在 IIS 中没有将虚拟目录配置为应用程序,则可能导致此错误"的解决方法