Info.cs 商品

public class Info {
boolean flag=false;
private String name="张三";
private int age=30;
public synchronized void set(String name,int age)
{
try
{
if(!flag)
super.wait();
}
catch(InterruptedException ex)
{
System.out.println(ex.getStackTrace());
} try
{
this.name=name;
Thread.sleep(100);
this.age=age;
}
catch(InterruptedException ex)
{
System.out.println(ex.getStackTrace());
}
flag=false;
super.notify(); //唤醒调用了wait的方法线程
}
public synchronized void get()
{
try
{
if(flag)
super.wait();
}
catch (InterruptedException ex)
{
System.out.println(ex.getStackTrace());
}
try
{
Thread.sleep(100);
System.out.println("name:"+name+" age:"+age);
}
catch(InterruptedException ex)
{
System.out.println(ex.getStackTrace());
}
flag=true;
super.notify();
}
}

Producter.cs 生产者类

public class Producter implements Runnable{
Info info=null;
boolean flag=false;
final int count=20;
public Producter(Info info)
{
this.info=info;
}
public void run()
{
for(int i=0;i<count;i++)
{
if(flag)
{
this.info.set("张三",30);
flag=false;
}
else
{
this.info.set("李四",40);
flag=true;
} }
}
}

Customer.cs 消费者类

public class Customer implements Runnable{
Info info;
final int count=20;
public Customer(Info info)
{
this.info=info;
}
public void run()
{
for(int i=0;i<count;i++)
{
info.get();
}
}
}

TestThread.cs 主类

public class TeshThread {

    public static void main(String[] args) {
// TODO Auto-generated method stub
Info info=new Info();
Producter p=new Producter(info);
Customer c=new Customer(info);
new Thread(p).start();
new Thread(c).start();
}
}

运行结果:

name:张三 age:30
name:李四 age:40
name:张三 age:30
name:李四 age:40
name:张三 age:30
name:李四 age:40
name:张三 age:30
name:李四 age:40
name:张三 age:30
name:李四 age:40
name:张三 age:30
name:李四 age:40
name:张三 age:30
name:李四 age:40
name:张三 age:30
name:李四 age:40
name:张三 age:30
name:李四 age:40
name:张三 age:30
name:李四 age:40

java多线程例子(生成者和消费者)的更多相关文章

  1. java 多线程例子

    java 多线程例子   编写具有多线程能力的程序经常会用到的方法有: run(), start(), wait(), notify(), notifyAll(), sleep(), yield(), ...

  2. Java 多线程学习笔记:生产者消费者问题

    前言:最近在学习Java多线程,看到ImportNew网上有网友翻译的一篇文章<阻塞队列实现生产者消费者模式>.在文中,使用的是Java的concurrent包中的阻塞队列来实现.在看完后 ...

  3. java 多线程并发系列之 生产者消费者模式的两种实现

    在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题.该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度. 为什么要使用生产者和消费者模式 在线程世界里,生产者就是生产数据 ...

  4. java多线程中的生产者与消费者之等待唤醒机制@Version1.0

    一.生产者消费者模式的学生类成员变量生产与消费demo,第一版1.等待唤醒:    Object类中提供了三个方法:    wait():等待    notify():唤醒单个线程    notify ...

  5. Java多线程设计模式(2)生产者与消费者模式

    1 Producer-Consumer Pattern Producer-Consumer Pattern主要就是在生产者与消费者之间建立一个“桥梁参与者”,用来解决生产者线程与消费者线程之间速度的不 ...

  6. Java多线程与并发——生产者与消费者应用案例

    多线程的开发中有一个最经典的操作案例,就是生产者-消费者,生产者不断生产产品,消费者不断取走产品. package com.vince; /** * 生产者与消费者案例 * @author Admin ...

  7. Java多线程之并发协作生产者消费者设计模式

    两个线程一个生产者个一个消费者 需求情景 两个线程,一个负责生产,一个负责消费,生产者生产一个,消费者消费一个 涉及问题 同步问题:如何保证同一资源被多个线程并发访问时的完整性.常用的同步方法是采用标 ...

  8. java多线程中的生产者与消费者之等待唤醒机制@Version2.0

    二.生产者消费者模式的学生类成员变量生产与消费demo, @Version2.0 在学生类中添加同步方法:synchronized get()消费者,synchronized set()生产者 最终版 ...

  9. java多线程系列15 设计模式 生产者 - 消费者模式

    生产者-消费者 生产者消费者模式是一个非常经典的多线程模式,比如我们用到的Mq就是其中一种具体实现 在该模式中 通常会有2类线程,消费者线程和生产者线程 生产者提交用户请求 消费者负责处理生产者提交的 ...

随机推荐

  1. MY_使用selenium自动登录126/163邮箱并发送邮件

    转自:https://www.cnblogs.com/yin-tao/p/7244082.html 我使用的是python2.7.13+selenium ps:几天之前,我曾多次尝试写这段代码,但是在 ...

  2. Resnet小记

    ResNet之Deeper Bottleneck Architectures 2016年12月28日 22:17:48 阅读数:2350 去年的时候,微软一帮子人搞了个152层的神经网络!WTF!详情 ...

  3. Obj模型功能完善(物体材质,光照,法线贴图).Cg着色语言+OpenTK+F#实现.

    这篇文章给大家讲Obj模型里一些基本功能的完善,包含Cg着色语言,矩阵转换,光照,多重纹理,法线贴图的运用. 在上篇中,我们用GLSL实现了基本的phong光照,这里用Cg着色语言来实现另一钟Blin ...

  4. SpringMVC自定义视图Excel视图和PDF视图

    SpringMVC自定义视图 Excel视图和PDF视图 SpringMVC杂记(十一) 使用Excel视图 Spring MVC 视图解析器(ViewResolver ) java实现导出excel ...

  5. 使用OpenSSL创建自己的CA root certificate

    在密码学中,CA(Certificate Authority,认证机构)是指一个被多个用户信任的机构,该机构能够创建和指派公钥证书. 为规范起见,我们先介绍本文可能涉及的术语, asymmetric ...

  6. Xianfeng轻量级Java中间件平台:菜单管理

    通过菜单管理,可以实现系统菜单的权限控制.用户个性化菜单功能等,当然很多系统支持在线开发,不用专门的开发工具编写代码,通过一些简单的设置就能开发出新的功能,有新功能增加到系统中,菜单管理功能也是必不可 ...

  7. IntelliJ IDEA 终极破解

    1. 下载破解补丁(JetbrainsCrack-2.6.10-release-enc.jar): http://idea.lanyus.com/jar/JetbrainsCrack-2.6.10-r ...

  8. Android 知识梳理

    说明:本篇博客只是一个知识整理,因为网上对于Android的知识介绍足够多,因此我不再写相关文章(主要是因为我写的不如人家好),所以所有文章均来自网络,不贴原文章,只提供连接,因此本文旨在减少你对相关 ...

  9. C#实现http协议支持上传下载文件的GET、POST请求

    C#实现http协议支持上传下载文件的GET.POST请求using System; using System.Collections.Generic; using System.Text; usin ...

  10. unity, WaterProDaytime注意事项。

    一,多个WaterProDaytime不要公用material. 原因是:水面material的shader(FXWaterPro.shader)引用了reflectionTexture,而水面1的r ...