经典同步模型-生产者消费者java代码实现

package cn.smallbug.thread;

/**
 * 资源定义
 * 
 * @timestamp Feb 13, 2016 11:55:10 PM
 * @author smallbug
 */
class Resource {
	private String name;
	private int age = 0;
	private boolean flag = false;

	public synchronized void setShow(String name) {
		while (flag)
			try {
				this.wait();
			} catch (InterruptedException e) {
			}
		this.name = name + age++;
		System.out.println("~~~~~~" + Thread.currentThread().getName() + "~~生产者~~~~" + this.name);
		flag = true;
		this.notifyAll();
	}

	/**
	 * 生产者
	 * 
	 * @timestamp Feb 13, 2016 11:55:24 PM
	 */
	public synchronized void getShow() {
		while (!flag)
			try {
				this.wait();
			} catch (InterruptedException e) {
			}
		System.out.println("~~~消费者~~~" + Thread.currentThread().getName() + "~~~~~~" + this.name);
		flag = false;
		this.notifyAll();
	}
}

/**
 * 生产者
 * 
 * @timestamp Feb 13, 2016 11:55:30 PM
 * @author smallbug
 */
class Production implements Runnable {
	private Resource r;

	Production(Resource r) {
		this.r = r;
	}

	@Override
	public void run() {

		while (true) {
			r.setShow("小虫");
		}
	}

}

/**
 * 消费者
 * 
 * @timestamp Feb 14, 2016 12:17:29 AM
 * @author smallbug
 */
class Consumer implements Runnable {
	private Resource r;

	Consumer(Resource r) {
		this.r = r;
	}

	@Override
	public void run() {
		while (true) {
			r.getShow();
		}

	}

}

public class WaitAwake {
	public static void main(String[] args) {
		Resource re = new Resource();

		Production p = new Production(re);
		Consumer c = new Consumer(re);

		Thread t1 = new Thread(p);
		Thread t2 = new Thread(c);
		t1.start();
		t2.start();
	}
}

 

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
获取【下载地址】    QQ: 313596790   【免费支持更新】 支持三大数据库 mysql  oracle  sqlsever    更专业、更强悍、适合不同用户群体 【 新录针对本系统的 视频教程 ,手把手教开发一个模块,快速掌握本系统 】 A 代码生成器(开发利器);       增删改查的处理类,service层,mybatis的xml,SQL( mysql   和oracle)脚本,   jsp页面 都生成    就不用写搬砖的代码了,生成的放到项目里,可以直接运行 B 阿里巴巴数据库连

eclipse开发hadoop环境搭建 - 2016-02-14 14:02:52

Hadoop2.6.0集群搭建完毕后,下面介绍一下eclipse是如何开发hadoop程序(即MapReduce程序)的。 1.jdk安装hadoop集群的搭建,不再详述,参考 http://kevin12.iteye.com/blog/2273556 ; 下面运行下hadoop自带的wordcount例子: 2.先将hadoop-2.6.0目录下面的README.txt和LICENSE.txt文件put到集群的/library/hadoop/data目录下面,如果目录不存在先创建; root@maste
    今天使用java代码调用mongodb数据库,用maven引入了最新版的mongodb驱动,在网上找了demo结果发现将demo贴到eclipse上之后好多过期方法。所以猜想mongodb驱动版本肯定有很大的更新。     果不其然,mongodb的确有了最新版3.x。而网上几乎所有的demo都基于2.x版本。下面是在github上找的一些资料,再结合官方文档总结的3.x版本的CRUD操作。       以下演示源码地址: https://github.com/smallbug-vip/repo
1.前提条件     下载JavaEE Eclipse ,自带Maven     安装好JDK1.8     下载并配置了Hadoop 2.6.x   2.创建Maven Project        选择 Maven-archetype-quickstart 选项      将项目的 JRE换成 JDK1.8,点击编辑 选择 系统的1.8版本  配置POM文件,为了以后写程序方便,pom.xml使用以下内容替换对应内容:    Ctrl+s保存后   Eclipse会下载 相关的Jar文件  关于pom
一共有四种MBean:     标准MBean (Standard MBeans)设计和实现是最简单的,这类MBean使用自己的方法名作为管理接口。     动态MBean(Dynamic MBeans)必须实现一个指定的接口,由于动态MBeans在运行期间暴露它们的管理接口,因此更为灵活。     开放MBean(Open MBeans)属于动态MBeans,这类MBean依靠基础数据类型来实现通用管理,并为友情用户进行自我声明。     模型MBean (Model MBeans)同样也是动态MBea
package com.chalmers.httputils;import java.io.FileOutputStream;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;/** * @author Chalmers * @version 创建时间:2016年2月7日 下午6:13:11 */public class HttpUtils {// 直接在本地开Tomcat进行下载private
\\  反斜杠 \t  间隔  ('\u0009') \n  换行  ('\u000A') \r  回车  ('\u000D') \d  数字 等价于 [0-9] \D  非数字 等价于 [^0-9] \s  空白符号  [\t\n\x0B\f\r] \S  非空白符号  [^\t\n\x0B\f\r] \w  单独字符  [a-zA-Z_0-9] \W  非单独字符  [^a-zA-Z_0-9] \f  换页符 \e Escape \b  一个单词的边界 \B  一个非单词的边界 \G  前一个匹配的结
转载于:http://www.itxuexiwang.com/a/shujukujishu/2016/0206/81.html 第一种:注解配置AOP 注解配置AOP(使用 AspectJ 类库实现的),大致分为三步: 1. 使用注解@Aspect来定义一个切面,在切面中定义切入点(@Pointcut),通知类型(@Before, @AfterReturning,@After,@AfterThrowing,@Around). 2. 开发需要被拦截的类。 3. 将切面配置到xml中,当然,我们也可以使用自动扫

[初级]设计模式--享元模式 - 2016-02-07 14:02:15

/** * 享元模式 * * 如果程序中存在大量的对象,并且对象之间也较为类似 * 这样,对象之间类似的部分就可以共享出来,这样就减少了内存开销 * * 1、具体实体类(大量对象中可共享部分) * 2、工厂类(共享池,返回已有对象或创建新对象) * 3、外部状态(大量对象中可不共享部分) * * 优点: * 1、节省内存开销 * 缺点: * 1、增加了系统度 * 2、虽然节省了内存,但增加了运行时长 * * 场景: * 1、五子棋 * 共享部分:颜色(黑、白) * 分共享部分:位置(1...361) *

代理模式 Java设计模式笔记 - 2016-02-06 14:02:48

代理模式的作用:       为一些对象提供一种代理关系,来控制对这个对象的访问,从而避免调用者对这个对象的直接调用,而起到中介、保护的作用。 代理模式的元素:       代理存在于事物的“间接关系”之中,不可或缺的需要三种角色:抽象角色、代理角色、真实角色。这里边的抽象角色,是用来解释“代理行为关系”的。 代理模式的故事场景:       时间回到三国,蜀魏两国掐起来了,诸葛亮又要搞曹操。战争这事儿上,除了武力值,更多的是玩智商,诸葛亮手底下的赵云啊、关兴啊、张苞啊要是直接去跟曹操磕,那根本不是个儿,