Java并发编程:Callable、Future和FutureTask 在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程 ...
分类:
编程语言 时间:
2016-08-08 12:50:36
阅读次数:
223
Java并发编程:Callable、Future和FutureTask 在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程 ...
分类:
编程语言 时间:
2016-08-08 12:41:13
阅读次数:
244
volatile 的特性 当我们声明共享变量为 volatile 后,对这个变量的读/写将会很特别。理解 volatile 特性的一个好方法是:把对 volatile 变量的单个读/写,看成是使用同一个锁对这些单个读/写操作做了同步。下面我们通过具体的示例来说明,请看下面的示例代码: 假设有多个线程 ...
分类:
编程语言 时间:
2016-08-08 00:35:28
阅读次数:
214
如果熟悉Java并发编程的话,应该知道在多线程共享变量的情况下,存在内存可见性问题: 在一个线程中对某个变量进行赋值,在另外一个线程中读取该变量的值,读取到的可能仍然是以前的值; 这里并非说的是时序的问题,例如读取操作在赋值操作之前执行了,而是说, 即使在另外一个线程中循环读取该变量的值,也可能永远 ...
分类:
编程语言 时间:
2016-07-30 13:37:39
阅读次数:
154
Java并发编程:Callable、Future和FutureTask 在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程 ...
分类:
编程语言 时间:
2016-07-29 17:09:02
阅读次数:
243
AngularJS中的作用域有一个非常有层次和嵌套分明的结构。其中它们都有一个主要的$rootScope(也就说对应的Angular应用或者ng-app),然后其他所有的作用域部分都是继承自这个$rootScope的,或者说都是嵌套在主作用域下面的。很多时候,你会发现这些作用域不会共享变量或者说都不 ...
分类:
Web程序 时间:
2016-07-20 21:26:17
阅读次数:
290
线程安全函数概念:线程安全的概念比较直观。一般说来,一个函数被称为线程安全的,当且仅当被多个并发线程反复调用时,它会一直产生正确的结果。确保线程安全:要确保函数线程安全,主要需要考虑的是线程之间的共享变量。属于同一进程的不同线程会共享进程内存空间中的全局区..
分类:
编程语言 时间:
2016-07-19 11:29:39
阅读次数:
189
多线程的可见性和有序性
———–多个线程之间是不能互相传递数据通信的,它们之间的沟通只能通过共享变量来进行。JMM规定了jvm有主内存,主内存是多个线程共享的。当new一个对象的时候,也是被分配在主内存中,每个线程都有自己的工作内存,工作内存存储了主存的某些对象的副本,当然线程的工作内存大小是有限制的。
当线程操作某个对象时,执行顺序如下:
(1) 从主存复制变量到当前工作内存 (read...
分类:
编程语言 时间:
2016-07-19 11:09:13
阅读次数:
192
prototype和原型是两回事,他只是Foo上预设的属性。原型是对象指向Foo上的属性。那么我们可以通过原型赋值的方法制作共享变量或方法,如上边的x赋值一样。 方法解析:1、Object.create() 方法创建一个拥有指定原型和若干个指定属性的空对象; 如Student.prototype=O ...
分类:
Web程序 时间:
2016-07-12 01:32:30
阅读次数:
265