易截截图软件、单文件、免安装、纯绿色、仅160KB

Java线程之Producer

 Producer-Consumer Pattern的参与者:
1. Data参与者
    被Producer参与者所创建,并由Consumer参与者所使用。
2. Producer(生产者)参与者
    创建Data参与者,并将其传递给Channel参与者。
3. Consumer(消费者)参与者
    从Channel参与者获取Data参与者。
4. Channel(通道)参与者
    Channel参与者从Producer参与者处接收Data参与者,并将其保管起来。并应Consumer参与者的要求,将Data参与者传送出去。
    为了确保安全性,Producer参与者与Consumer参与者要对访问进行共享排斥。
在Producer-Consumer Pattern中,肩负保护安全性使命的是Channel参与者。Channel参与者进行线程之间的共享互斥,让Producer参与者能够正确的将Data参与者送到Consumer参与者手上。
这里,虽然分离了Producer和Consumer之间的交互,Producer参与者不需要等Consumer参与者处理完Data,就可以继续去制造下一个Data,Channel参与者作为Producer和Consumer之间的缓冲区。但是Channel参与者的容量也是有限的,也就是说,当Consumer消费Data的速度小于Producer制造Data的速度时,Channel中的Data数量会持续增加。这里需要对Channel的容量加以控制,否则可能会最后因为内存不足而使得Producer制造不出Data。对于Producer参与者来说,在Channel容量不足的情况下,要予以等待。
引申:
1. 因为Channel参与者的中介,使得Producer和Consumer的多条线程协调合作。
    线程为了协调合作,所以必须进行共享互斥,使共享的东西不被损坏。而线程的共享互斥,就是为了让相处合作才进行的。
    线程的合作要想“放在中间的东西”,线程的互斥要想“应该保护的东西”
2. 因为Channel参与者的中介,可以使Producer制造出来的多个Data以不同的顺序传递给Consumer。
    常见的传递机制有:
    -- 队列, 最先收到的先传
    -- 堆栈, 最后收到的先传
    -- 优先队列, “优先”的东西先传


相关文档:

Java socket 入门编程实例

 这是一个C/S之间通信的例子,在JDK1.4下测试通过.
//服务器端源程序tcpserver.java
import java.io.*;
import java.net.*;
public class tcpserver
{
    public static void main(String[] args) throws  IOException
    {
        ......

Java相对路径/绝对路径总结 (转)

1.基本概念的理解
绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:
C:xyz est.txt 代表了test.txt文件的绝对路径。http://www.sun.com/index.htm也代表了一个URL绝对路径。
相对路径:相对与某个基准目录的路径。包含Web的相对路径(HTML中的相对目录),例如:在
Servlet中, ......

[zhuangzai]java容器

Java容器类学习心得
由于我对C++比较熟悉,所以学习Java应该重点体会Java带来的新概念。本文基本上是Java标准库中集合框架的基本概念,没有例子。写本文的目的在于方便我很长时间后若是忘了这些东西可以通过这片文章迅速回忆起来。
1. 接口
整个Java容器类的基础是容器接口(例如Collection,Map等接口),而不是类 ......

java中初始化顺序(转)

(1)初始化的顺序(静态、非静态、final、变量、对象)
    对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器。
我们也可以通过下面的测试代码来验证这一点:
Java代码:
public class InitialOrderTest {
......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号