ThreadLocal是为解决多线程程序的并发问题而提出的,可以称之为线程局部变量。与一般的变量的区别在于,生命周期是在线程范围内的。static变量是的生命周期与类的使用周期相同,即只要类存在,那么static变量也就存在。那么一个 static 的 ThreadLocal会是什么样的呢? 看下面 ...
分类:
其他好文 时间:
2016-07-01 11:45:30
阅读次数:
225
static方法: 静态方法不依赖于任何对象,在静态方法中不能访问非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。 static变量: 静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。 而非静态变量是对象所拥有的,在创 ...
分类:
其他好文 时间:
2016-06-29 18:48:52
阅读次数:
99
为什么要有TLS?原因在于,进程中的全局变量与函数内定义的静态(static)变量,是各个线程都可以访问的共享变量。在一个线程修改的内存内容,对所有线程都生效。这是一个优点也是一个缺点。说它是优点,线程的数据交换变得非常快捷。说它是缺点,一个线程死掉了,其它线程也性命不保; 多个线程访问共享数据,需 ...
分类:
其他好文 时间:
2016-06-28 22:04:22
阅读次数:
168
C函数可以通过堆栈来和Lua交换数据,但有时候C函数需要在函数体的作用域之外保存某些Lua数据,那么我们想到全局变量或static变量,这样做的缺点是: registry全局注册表 解释:一个普通的Lua表,使用假索引(pseudo-index)LUA_REGISTRYINDEX访问。C代码可以访问 ...
分类:
其他好文 时间:
2016-06-28 12:30:39
阅读次数:
141
1.共享、可变。 偷个懒,下面是《java并发编程实战》的一段: 当我第一次看到这段话的时候,确实有点晕。对象的状态:成员变量、static变量以及其他依赖对象的域都是对象的状态。如果一个对象是无状态的(既没有成员变量和static变量,也没有其他依赖对象的域),那么这个对象绝对是线程安全的。共享: ...
分类:
其他好文 时间:
2016-06-23 20:34:40
阅读次数:
111
1、static修饰的变量会一直保存在内存中,直到程序结束才会被销毁,不管你是在代码的那个位置定义的这个变量。因此你定义的static变量只会初始化一次,之后你获取到的static修饰的变量的值均是上次赋的值。 代码: 当pla结束第一次调用的时候,i还存在再内存中,值为2;当这个函数第二次被调用, ...
分类:
其他好文 时间:
2016-06-23 18:32:32
阅读次数:
125
@synchronized 的作用是创建一个互斥锁,保证此时没有其它线程对self对象进行修改。这个是objective-c的一个锁定令牌,防止self对象在同一时间内被其它线程访问,起到线程的保护作用。 一般在公用变量的时候使用,如单例模式或者操作类的static变量中使用。 大概就是如果线程A访 ...
分类:
其他好文 时间:
2016-06-22 12:46:16
阅读次数:
160
在java中,我们经常使用的是单例模式,这些设计模式在ios开发中也比较常用,最近也在考虑使用在ios开发中使用单例模式 在objective-c中,需要在.m文件里面定义个static变量来表示全局变量(和java里面的类变量类似,但是在objective-c中,static变量只是在编译时候进行 ...
分类:
其他好文 时间:
2016-06-18 11:36:19
阅读次数:
168
1、static变量 按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量;另一种是没有被static修饰的变量,叫实例变量。两者的区别是: 对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可 ...
分类:
编程语言 时间:
2016-06-15 22:01:20
阅读次数:
225
在效率上:常量编译过程比静态变量快的多。 代码: 结论: 实例的属性才可以用 $obj->c 这种方式访问。 静态变量和常量都是类的属性,类的属性都用双冒号访问(::),通过对象或者类名都可以访问。 常量是不可变的,静态变量可以通过self来赋值改变。 const常量:类的不变属性 static变量 ...
分类:
Web程序 时间:
2016-06-15 06:54:56
阅读次数:
380