文章列表
多线程的并发问题,主要是由于多个线程共享同一变量引起的。但有时并不需要在多线程中共享变量,所以在定义全局变量时,为了避免多线程并发带来的问题,可以使用ThreadLocal来让每个线程拥有独立的对象。
它有三个较重要的方法:
initialValue:是个protected方法,第一次调用ThreadLocal对象的get方法时会调用这个方法。
get:返回当前执行线程的最新值。
set:设置当前执行线程的值。
private static ThreadLocal<Connection> connection=new ThreadLocal<Connection>() ...
Java中volatile变量有如下特性:
1、编译器和运行时都会注意到这个变量是共享的,不会对它进行重排序。
2、volatile变量不会被缓存到寄存器,因此读取volatile类型的变量时总会返回最新写入的值。
3、volatile变量是一种比sychronized关键字轻量级的同步机制。
4、一般用来作为程序标示(开关)使用,如下:
private volatile boolean asleep;
...
while(!asleep){
....;
}
5、volatile可以保持变量的可见性、但不能保证原子性。
private volatile int a= ...
插件介绍
html的file控件由一个text框和一个button构成。存在如下几个问题:
1、text框中无法初始化一些说明文字。
2、button上的字是浏览器内置的,修改不了,英文版的浏览器是“Browser…”,中文版的浏览器是“浏览…”,导致无法给按钮上的文字国际化。
3、button的样式也是浏览器内置的,控制不了。
要达到下图的效果,type=”file”不可能。
jquery.fakeUpload就是为了解决上述问题而编写的插件。
如何使用
1、导入jquery.fakeUpload.js(当然它是依赖jquery的)
2、在html的body中加入span ...