- 浏览: 382490 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (209)
- db2 (4)
- oracle (1)
- sqlserver (16)
- java (54)
- jdbc (3)
- html、js (21)
- MQ、MB (6)
- uml (3)
- 格言 (7)
- 笑话 (3)
- 管理 (5)
- note (10)
- hibernate (1)
- 设计模式 (4)
- win8 (5)
- postgre (2)
- cxf (3)
- MyBatis (4)
- tomcat (9)
- servlet (2)
- ant (2)
- spring (5)
- windows (3)
- linux (7)
- struts2 (2)
- android (2)
- eclipse (1)
- drools (1)
- jmx (2)
- c++ (3)
- html、js、JSP (1)
- mysql (1)
- redis (1)
- 架构 (1)
最新评论
-
onlyor:
灰太狼1991 写道很受用,请教一下博主,mybatis模糊查 ...
MyBatis模糊查询 -
灰太狼1991:
很受用,请教一下博主,mybatis模糊查询是不是和版本也有关 ...
MyBatis模糊查询 -
zzgvictory:
你写的么,很美啊
js 画 玫瑰花 -
onlyor:
里面的算法值得研究啊
js 画 玫瑰花 -
bjqincy:
用 org.joda System.out.println(& ...
Java 获取 一个月有多少周
public class ProducerConsumer { public static void main(String[] args) { ProductBox pb = new ProductBox(); Producer p = new Producer(pb); Consumer c = new Consumer(pb); Thread pThread = new Thread(p); Thread cThread = new Thread(c); pThread.setPriority(Thread.MAX_PRIORITY); cThread.setPriority(Thread.MIN_PRIORITY); pThread.setName("Producer"); cThread.setName("Consumer"); pThread.start(); cThread.start(); } } class Product { int id; public Product(int id) { super(); this.id = id; } public String toString() { return "Product:" + id; } } class ProductBox { Product[] productbox = new Product[6]; int index = 0; public ProductBox() { super(); } public synchronized void push(Product p) { while (index == productbox.length) { try { System.out.println(Thread.currentThread().getName() + ".push()"); this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } this.notify(); productbox[index] = p; index++; } public synchronized Product pop() { while (index == 0) { try { System.out.println(Thread.currentThread().getName() + ".pop()"); this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } this.notify(); index--; return productbox[index]; } } class Producer implements Runnable { ProductBox productbox = null; public Producer(ProductBox productbox) { super(); this.productbox = productbox; } public void run() { for (int i = 0; i < 10; i++) { Product p = new Product(i); productbox.push(p); System.out.println("++produce:" + p); try { Thread.sleep((int) (Math.random() * 200)); } catch (InterruptedException e) { e.printStackTrace(); } } } } class Consumer implements Runnable { ProductBox productbox = null; public Consumer(ProductBox productbox) { super(); this.productbox = productbox; } public void run() { for (int i = 0; i < 10; i++) { Product p = productbox.pop(); System.out.println("--consume:" + p); try { Thread.sleep((int) (Math.random() * 1000)); } catch (InterruptedException e) { e.printStackTrace(); } } } }
发表评论
-
多线程之Java线程阻塞与唤醒
2017-08-15 01:38 542线程的阻塞和唤醒在多线程并发过程中是一个关键点,当线程数量达 ... -
diffcount 代码差异统计工具
2016-08-12 18:11 1631使用diffcount,可以直接统计前后两个工程中,增加、 ... -
solr5 配置 与 创建core
2015-12-31 09:49 34251. 准备安装包(保证tomat能正常启动) so ... -
HTTP访问的两种方式(HttpClient和HttpURLConnection)
2015-12-30 11:58 2885直接上代码 使用HttpClient Name ... -
maven 使用slf4j与logback结合
2015-10-31 21:10 1389<dependency> & ... -
WAS性能优化分析工具
2015-10-23 14:40 758WAS性能优化分析工具被分析的文件heapdump165490 ... -
异常分类使用
2015-05-04 16:23 583异常分类使用 1.RuntimeException, ... -
一个java枚举的实例
2015-05-04 16:20 702一个java枚举的实例,直接上代码。 /** * ... -
java枚举实例
2015-05-04 16:18 508直接上代码 /** * * 〈枚举测试〉& ... -
POI excel 单元个的内容 自适应行高
2014-12-05 11:03 16860POI excel 单元个的内容 自适应行高 pub ... -
POI的一些操作 获取、删除区域Region 删除多行
2014-12-04 17:02 35831 通过行列获取区域 /** * 获取区域 ... -
Java 排序(转)
2014-11-27 13:51 731排序 public class Sort { ... -
log4j.properties
2014-11-27 13:26 893log4j.rootLogger=DEBUG,CONSOLE, ... -
corba,ejb ,webservice,rest分布式 区别
2014-09-30 11:04 985Corba,还是EJB,都有一些共同点:1) 通过专有的网络协 ... -
JAVA注解总结
2014-09-25 10:21 663最近打算搞清楚以下问题:1. 注解的原理与使用 2. Ja ... -
在同一个类中,线程资源竞争
2014-09-02 08:55 957/** * 在同一个类中,线程资源竞争 ... -
linux下Java字体乱码(解决图像中中文乱码)
2014-08-12 16:27 23792在Java中可以使用如下判断支持的字体 GraphicsE ... -
DBCP 数据源 下载jar包
2014-08-01 13:36 2482一.DBCP 是 Apache 软件基金组织下的开源连接池 ... -
RMI 实例
2014-06-05 09:39 518RMI 实例 package rmi.train; ... -
基于httpclient-4.3 和 4.1的编写小例子
2014-05-29 19:45 1998基于httpclient-4.3 和 4.1的编写小例子 ...
相关推荐
在并发编程中,"生产者-消费者"模式是一种经典的解决问题的范式,用于协调两个或更多线程间的协作,其中一部分线程(生产者)生成数据,另一部分线程(消费者)消费这些数据。 生产者-消费者模型的核心在于共享资源...
本示例中的“生产者-消费者”模型是一种经典的多线程问题,它模拟了实际生产环境中的资源分配与消耗过程。下面我们将详细探讨如何在Java中实现这个模型。 首先,我们要理解生产者-消费者模型的基本概念。在这个模型...
java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现...
用java多线程,实现生产者消费者同步和互斥的问题,操作系统中的经典问题
java多线程经典模型生产者消费者java多线程经典模型生产者消费者java多线程经典模型生产者消费者java多线程经典模型生产者消费者java多线程经典模型生产者消费者java多线程经典模型生产者消费者java多线程经典模型...
总之,生产者消费者模式是多线程编程中的一种重要设计模式,它通过信号量和条件变量实现了线程间的同步和通信,有效提高了系统资源的利用率和整体效率。在Java中,我们可以借助并发库轻松实现这一模式,使得代码更加...
总之,Java中的生产者-消费者模式是多线程编程中解决数据共享和同步问题的有效手段,通过合理利用`BlockingQueue`等并发工具类,我们可以构建高效、稳定的多线程应用。在开发过程中,了解和掌握这种模式有助于提高...
在实际应用中,我们常常会遇到一种典型的多线程问题——生产者消费者模型。这个模型描述了两种类型的线程:生产者线程负责创建或生产资源,而消费者线程则负责消耗这些资源。在Java中,我们可以利用同步机制来实现...
在`JThreadSynch`这个压缩包文件中,我们可以预见到包含的Java源代码将展示以上的一种或多种机制,通过具体的示例代码来解释和实现生产者消费者问题的线程同步和互斥。通过学习和理解这个示例,开发者可以更好地掌握...
基本满足操作系统课上要求,java实现的生产者消费者模型。
4. **阻塞队列(BlockingQueue)**:Java并发包(java.util.concurrent)中的阻塞队列是实现生产者消费者模式的理想选择。它们在内部已经处理了线程同步和等待,提供了一种高效且安全的共享数据方式。例如,`put()`...
Java多线程编程是开发高并发、高性能应用的关键技术之一,而生产者消费者模式是多线程编程中常用的一种设计模式。它通过分离数据的生产和消费过程,实现了线程间的协同工作,有效避免了资源的竞争和浪费。在这个模式...
java 多线程 生产者消费者模式,多个生产者对多个消费者,使用jdk 线程池及 BlockingQueue实现,解决了待生产的任务生产完成后,正常终止所有线程,避免线程(特别是消费者线程)因阻塞而无限等待的情况。源码中还简单...
Java多线程生产者消费者模型是一种典型的线程协作模式,用于解决并发编程中资源的高效利用和同步问题。在这个模型中,"生产者"线程负责生成数据,而"消费者"线程则负责处理这些数据。为了实现这种模式,Java提供了...
JAVA多线程实现生产者消费者的实例详解 JAVA多线程实现生产者消费者是指在JAVA编程语言中使用多线程技术来实现生产者消费者模型的实例详解。生产者消费者模型是指在计算机科学中的一种经典模式,描述了生产者和消费...
关于java多线程的东西,里面有生产者与消费者的案例,感兴趣的朋友看一下吧。
java多线程学习,生产者消费者问题示例
### 由生产者/消费者问题深入理解JAVA多线程 #### 生产者/消费者问题概述 生产者/消费者问题是一个经典的计算机科学问题,用于展示进程间的通信与同步问题。在这个模型中,生产者负责创建数据并将其放置到共享内存...