00:00
接下来讲到这儿,通过前面对local的入门介绍,API的调用,源码分析,内存泄露,3K强软弱需的各种饮料等等等等,那么对于我们的所local应该介绍是接近尾声了,那接下来老规矩,最终我们要给大家给出一下小总结和最佳实践,带着大家复习一下好。那么首先第一个问题,怎么使用local最好呢?三个,第一个尽量LOCAL1定要先出始化,避免空指针异常,第二个local愿意的话你可以修饰为static。OK,这个是个建议,你不这么干也可以。第三一个用完记得手动remove,这个是强制,OK,大家请看,强制没问题吧,好,挨个挨个过。首先初始化这个问题,那么弟兄们我们都明白,像杨哥这儿,不管你定义什么类型,一定要给他一个初始化,否则容易报控指针异常,千万不要干这种蠢事,因为我们一开始的时候,他会先去get,看看有没有那么来get get这个,如果你这个初始化的值你没有给我,我给你返回一个,那这样就特别容易导致你控制人异常,别这么干,这是第一步。第二个呢,就是如果你院线啊,你可以把它定义为static,就这么一个,OK,那么这个呢,倒是一个建议,看你自己,那么这个呢,来自于也是我们的什么阿里手册,那么来同学们,我们可以简单的呃找一下啊。
01:31
最后一条是参考,所以说我也这儿呢,也就没有强制要求大家啊local对象使用static修饰这个的话呢,巴拉巴拉这堆,那么理由是什么呢?来就一句话。虽然没口,能够实现现成的什么数据隔离。不在于他自己本身,而是在于线程里面这个local map OK,我们说过了,线程是人,Local map才是你真真真正那个。建值信息,所以S只需要初始化一次就行了,只分配一块存储空间就足以,没必要作为成员变量多次被初始化。那么什么意思呢?如果你来你这么一个对象的时候。
02:11
是静态的就一份,非静态的每个就一份,稍微有点浪费,但是呢,也无所谓,OK,设置为静态变量干嘛只分配一块存储空间,就以现在的空间没关系,当然你完全严格的遵守阿里巴巴手册,使用static修饰也可以,好,这是我们的是吗?第二个。理由和建议,第三一个用完记得remove,这个是什么啊,这个才是参考啊,你爱用不用我也不和你争,但这个是一定一定要反复强调过了,OK,强制强制的东西我们严格遵守,参考的你酌情考虑好,所以说呢,这个呢就是我们对local的一个最佳实践的总结。初始化。建议定义为static变量,酌情考虑看你自己,但是必须强制remove好,那么最终给我们的所这章落下帷幕做个总结来。
03:07
所local并不解决线程间共享数据的问题,那么我们这个东西最开始的时候就给大家呢说过。哪有听说过共享他中枪了,这个的血液血槽减少了,这个不合适啊,各玩各的,OK,所以说我们这儿它不是来解决线程间共享数据的问题,使用于变量在线程间隔离,且在方法间共享的场景。通过影视的在不同线程内创建独立实例副本,避免了实例线程安全问题,不用加锁,每个线程人手一份,每个线程持有一个只属于自己的专属thread local map OK,并维护thread local对象与具体与具体实例的映射。这个map。由于植被持有它的线程访问和独有,所以不存在线程安全及锁的相关问题。那么map的entry。
04:06
对于th thad local的引用是为弱引用的,避免了这个th local对象无法被回收的问题,那会通过这些方法,说白了这一段话就是什么清除脏entry,防止本身内存泄漏,属于安全加固。OK,所以说所local一句话,加锁的时候群雄逐鹿起奋战,不加锁怎么办?还要保证县城安全,人各一份天下啊,OK。好,那么感谢各位同学的聆听,所有的local就给大家介绍到这儿。
我来说两句