线程间通讯? ????java? 方法一 通过访问共享变量的方式(注:需要处理同步问题)? 通过内部类实现线程的共享变量 通过实现Runnable接口实现线程的共享变量?? ? ? ? ? ?? 方法二 通过管道流 方法一 ?...
分类:
编程语言 时间:
2015-06-29 18:09:31
阅读次数:
215
1.进程互斥
由于各个进程需要使用共享资源(变量,文件等),而这些资源需要排它性使用,各个进程之间竞争使用这些资源,这一关系称为进程互斥。
2.临界资源(也称互斥资源、共享变量)
系统中一次只允许一个进程使用的资源。
3.临界区(也称互斥区)
各个进程中对某个临界资源实施操作的程序片段。
临界区的使用原则:
(本文内容整理自coursera上陈...
分类:
系统相关 时间:
2015-06-28 21:40:03
阅读次数:
277
在Java中,所有实例域、静态域和数组元素存储在堆内存中,堆内存在线程之间共享。局部变量、方法定义参数和异常处理器参数不会在线程之间共享,他们不会有内存可见性问题,也不受内存模型的影响。Java线程之间的通信由Java内存模型(JMM)控制,JMM决定一个线程对共享变量的写入何时对另一个线程可见。从...
分类:
编程语言 时间:
2015-06-02 14:48:26
阅读次数:
135
在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。
这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。
如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。
而自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务...
分类:
编程语言 时间:
2015-06-01 13:20:53
阅读次数:
206
一、JAVA内存模型简介
JAVA Merory Model描述了JAVA程序中各种变量(线程共享变量)的访问规则,以及在JVM中将变量存储到内存和从内存中读取变量这样的底层细节。
所有的变量都保存在主内存中,但是每个线程都有自己的独立工作内存,保存该线程使用到的变量的一个副本。
两条规定
1.线程对共享变量的操作只能在独立的工作内存中进行,不能在主内存中直接读写;
2.不...
分类:
编程语言 时间:
2015-05-28 21:38:07
阅读次数:
262
http://blog.chinaunix.net/uid-26946560-id-3438795.html一组并发线程运行在一个进程的上下文中,每个线程都有它自己独立的线程上下文,例如:栈、程序计数器、线程ID、条件码等,每个线程和其它的线程一起共享除此之外的进程上下文的剩余部分,包括整个用户的虚...
分类:
编程语言 时间:
2015-05-28 01:59:43
阅读次数:
300
volatile的特性当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个锁对这些单个读/写操作做了同步。下面我们通过具体的示例来说明,请看下面的示例代码:class VolatileFe...
分类:
编程语言 时间:
2015-05-25 23:56:52
阅读次数:
268
本文通过介绍Java的新/旧内存模型,来展示Java技术的历史变迁。旧的Java内存模型Java使用的是共享内存的并发模型,在线程之间共享变量。Java语言定义了线程模型规范,通过内存模型控制线程与变量的交互,从而实现Java线程之间的通信。在JDK5之前,Java一直使用的是旧内存模型。如图1所示...
分类:
编程语言 时间:
2015-05-22 00:11:16
阅读次数:
196
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------本章小结1.指针是C语言中一个重要的组成部分,使用指针编程有以下优点:(1)提高程序的编译效率和执行速度。(2)通过指针可使用主调函数和被调函数之间共享变量或数据结构,便于实现双向数据通讯。(3)可...
分类:
编程语言 时间:
2015-05-20 00:27:04
阅读次数:
151
Java虚拟机内存模型了解Java虚拟机的内存模型,有助于我们明白为什么会发生线程安全问题.上面这幅图是的书中截图.线程共享的变量会保存在主内存中(Main Memory).而线程共享的变量的副本会保存在每个线程各自的工作内存中(Working Memory).线程对于共享变量的所有操作(读取,赋值...
分类:
编程语言 时间:
2015-05-17 12:06:44
阅读次数:
149