Home | Archives | Categories | Tags | About |
|
之前写过一篇文章:《ThreadLocal、HandlerThread、Lopper区别》,其中简单提及了ThreadLocal的解释。本篇文章主要结合具体应用场景——SimpleDateFormat,和大家来一起学习ThreadLocal的原理,并对ThreadLocal进行一个详细的介绍。
下面是本文的参考资料:
java学习记录–ThreadLocal使用案例——SimpleDateFormat:
http://blog.csdn.net/u012706811/article/details/53231598
SimpleDateFormat的线程安全问题与解决方案:
http://www.cnblogs.com/zemliu/archive/2013/08/29/3290585.html
Thread这个类有一个变量:ThreadLocal.ThreadLocalMap threadLocals。
这是一个map的数据结构,里面的元素的key就是ThreadLocal,value就是我们自定义的一些目标类。
我们可以在自己的多线程类中定义好几个ThreadLocal,然后每一个ThreadLocal put一个特定的目标类,然后以后可以用ThreadLocal get到目标类(ThreadLocal用自己作为Thread里map的key),因为每个Thread有自己独自的map,所以这样可以实现每个线程有自己的LocalThread,并且一个Thread里可以有多个LocalThread。
ThreadLocal为变量在每个线程中都创建了一个副本,所以每个线程可以访问自己内部的副本变量,不同线程之间不会互相干扰。
本篇文章结合具体应用场景,来分析ThreadLocal为什么可以实现不同线程之间不会互相干扰。
Hexo会读取根目录下的_config.yml里面的theme属性, 从而采用对应的主题。而主题都是放在themes/目录下面的,然后你会发现他里面有个landscape的目录,这个就是默认主题啦。
接着,我们查看themes/landscape/目录,以及根据文档docs-themes,我们很容易得出:一个主题其实由4部分组成。
根据文档docs-templates,下面表格中每个页面都有一个可用的模板,可以没有这些模板,但至少要有一个index模板。
本文是我自己的学习笔记,整理自《Node入门》
作者: Manuel Kiessling
翻译: goddyzhao & GrayZhang & MondayChen
本书致力于教会你如何用Node.js来开发应用,过程中会传授你所有所需的“高级”JavaScript知识。本书绝不是一本“Hello World”的教程。
JavaScript最早是运行在浏览器中,然而浏览器只是提供了一个上下文,它定义了使用JavaScript可以做什么,但并没有“说”太多关于JavaScript语言本身可以做什么。事实上,JavaScript是一门“完整”的语言: 它可以使用在不同的上下文中,其能力与其他同类语言相比有过之而无不及。
Node.js事实上就是另外一种上下文,它允许在后端(脱离浏览器环境)运行JavaScript代码。
我在更新hexo,准备安装别的module时,不小心按到了 ctrl+c,结果发现使用hexo命令会报如下错误:{ [Error: Cannot find module './build/Release/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' }
{ [Error: Cannot find module './build/default/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' }
{ [Error: Cannot find module './build/Debug/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' }