- 浏览: 175543 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
18335864773:
国产的软件PageOffice,本质上也是在客户端生成Exce ...
java 导出Excel 大数据量(一) -
zenmshuo:
从错误结果来看,应该是参数错误。我在用ActiveReport ...
jasper 子报表无法找到 -
longying2008:
是呀,恶心死人了,还天天发,天天上首页。
受不了那些打广告的了 -
endual:
前天晚上实在受不了,在它的某个广告下随口回了一句,跟他开始了无 ...
受不了那些打广告的了 -
西南吹风:
而且这人人品极其低劣。可称之为极品。他第一回发的时候,对他的作 ...
受不了那些打广告的了
复习java线程,然后实现生产者与消费者问题,4个文件代码如下:
1.生产者:
/** * producer.java * xmlanalysis * 2011-8-26 */ package com.lyjilu.thread; import java.util.List; /** * @author dawn.liu 2011-8-26 上午10:54:22 */ public class Producer extends Thread { /** * */ public Producer() { } public Producer(String name) { this.Threadname = name; } public Producer(String name, List<Object> list) { this.list = list; this.Threadname = name; } /** * 用于标识线程 */ private String Threadname; /** * 要操作的list */ private List<Object> list; /* * (non-Javadoc) * * @see java.lang.Runnable#run() */ @Override public void run() { for (int i = 0; i < 10; i++) { synchronized (list) { list.add(Threadname + i); System.out.println("Producer[" + Threadname + "]: " + Threadname + i); try { list.notify(); list.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } System.out.println(Threadname + " is out"); } }
2、消费者:
/** * Customer.java * xmlanalysis * 2011-8-26 */ package com.lyjilu.thread; import java.util.List; /** * @author dawn.liu 2011-8-26 上午11:00:46 */ public class Customer extends Thread { private List<Object> list; public Customer() { } public Customer(List<Object> list) { this.list = list; } /* * (non-Javadoc) * * @see java.lang.Runnable#run() */ @Override public void run() { for (int i = 0; i < 1000; i++) { synchronized (list) { if (list.size() > 0) { Object o = list.get(list.size() - 1); list.remove(list.size() - 1); System.out.println("Customer : " + o); if (list.size() == 0) try { list.wait(100); } catch (InterruptedException e) { e.printStackTrace(); } list.notify(); } } } } }
3.公共资源类:
/** * ResourceList.java * xmlanalysis * 2011-8-26 */ package com.lyjilu.thread; import java.util.List; import java.util.Vector; /** * @author dawn.liu * 2011-8-26 上午10:58:47 */ public class ResourceList { public List<Object> list = new Vector<Object>(1000); }
4.最后是测试类:
/** * Main.java * xmlanalysis * 2011-8-26 */ package com.lyjilu.thread; import java.util.List; /** * @author dawn.liu * 2011-8-26 上午11:01:05 */ public class Main { /** * @param args */ public static void main(String[] args) { ResourceList res = new ResourceList(); List<Object> list = res.list; Producer p1 = new Producer("First",list); Producer p2 = new Producer("Second",list); Producer p3 = new Producer("Third",list); Producer p4 = new Producer("Fourth",list); Producer p5 = new Producer("Fifth",list); Producer p6 = new Producer("Sixth",list); Customer c = new Customer(list); p1.start(); p2.start(); p3.start(); p4.start(); p5.start(); p6.start(); c.start(); } }
采用通过唤醒与等待方式,作为学习备忘
要产生一个线程很简单,继承Thread 或实现 Runnable,
API例子的代码:
class PrimeThread extends Thread { long minPrime; PrimeThread(long minPrime) { this.minPrime = minPrime; } public void run() { // compute primes larger than minPrime . . . } } -------------------------------------------------------------------------------- 然后,下列代码会创建并启动一个线程: PrimeThread p = new PrimeThread(143); p.start();
第二种:
class PrimeRun implements Runnable { long minPrime; PrimeRun(long minPrime) { this.minPrime = minPrime; } public void run() { // compute primes larger than minPrime . . . } } -------------------------------------------------------------------------------- 然后,下列代码会创建并启动一个线程: PrimeRun p = new PrimeRun(143); new Thread(p).start();
发表评论
-
BouncyCastleProvider加密的时候千万别乱new BouncyCastleProvider 切记
2015-07-21 14:47 14326BouncyCastleProvider加密的时候千万别乱n ... -
jasper 打印 报错 net.sf.jasperreports.engine.JRRuntimeException: Subreport overflow
2015-03-09 16:49 3539详情列表中需要增加子报表,但总是报错 net.sf.ja ... -
IBM AIX 服务器 PBE解密 报错 Given final block not properly padded
2014-12-15 17:54 2794在各个客户服务器上运行好好的PBE加解密程序突然在一个用AIX ... -
工作备忘
2014-11-13 13:51 0表单页面布局和展示页面布局用不同的样式表,以便维护的时候,可 ... -
被中止,呼叫 getNextException 以取得原因
2014-09-12 17:38 8733批量插入数据报错, 批次处理 0 insert into ... -
java util date转换成js日期
2014-07-20 17:24 2524问题是这样的,javabean中标准date是使用java ... -
java 导出Excel 大数据量(二)
2014-06-20 17:50 8835导出大量数据到 excel 的 xlsx文件 stat ... -
java操作oracle clob字段
2014-06-17 11:19 1070问题是这样,系统中要对oracle数据库的clob字段进行插 ... -
自己实现的连接池,和dbcp居然有差点一倍的效率差距,不开心。。
2014-02-18 21:41 828自己写的数据库连接池,个人感觉良好,这两天测试才发现,效率那 ... -
java获取浏览器类型及版本
2013-12-27 10:25 8057public Map<String,String> ... -
request.getContextPath()为空
2013-12-02 10:30 6217request.getContextPath()获取的结果 ... -
取得java对象地址
2013-05-25 11:49 1247前段时间想打印出对象地址,但是由于list重写 了toStr ... -
spring 中使用web容器连接池不关闭连接
2013-05-15 09:43 3505如果方法上加 了“@Transactional”就能正常关 ... -
设置html文件响应头
2013-05-06 11:17 2362原写法: response.addHeader( ... -
jasper 子报表无法找到
2013-03-08 20:11 2715网上有这样的说法 主要原因: 主报表找不到子报表的Jas ... -
java 图片缩放(2)
2013-02-18 17:35 1394之前写过一个图片缩 ... -
spring 报错:Probable fatal error:No fonts found.
2013-01-02 23:43 2475lyjilu.iteye.com centos 6.2 网 ... -
css @IMPORT 不起作用
2012-12-09 00:15 2471今天遇见个问题,就是css里面用@IMPORT 包含进来的页面 ... -
浏览器刷新与缓存
2012-12-08 16:28 1402用谷歌浏览器测试,在设置了Cache-Control=max- ... -
java 导出Excel 大数据量(一)
2012-11-25 19:03 29472分析导出实现代码,XLSX支持: /** ...
相关推荐
9. **测试与调试**:多线程问题往往难以复现,因此在编写生产者-消费者代码时,应编写充分的测试用例,包括边界情况,如缓冲区满和空的状态转换。 通过理解和掌握这些知识点,开发者能够有效地实现生产者-消费者...
而生产者与消费者模型是多线程编程中一个经典的同步问题,主要用于解决资源的共享和高效利用。在这个模型中,生产者负责创建资源,而消费者则负责消费这些资源。为了保证生产与消费的协调进行,通常会用到线程同步...
本示例中的“生产者-消费者”模型是一种经典的多线程问题,它模拟了实际生产环境中的资源分配与消耗过程。下面我们将详细探讨如何在Java中实现这个模型。 首先,我们要理解生产者-消费者模型的基本概念。在这个模型...
本项目通过一个生产者消费者问题的实例,展示了如何在Java中实现线程间的同步与互斥。 生产者消费者问题是经典的并发问题之一,它涉及到两个类型的线程:生产者和消费者。生产者负责生成数据(产品),而消费者则...
4. **阻塞队列(BlockingQueue)**:Java并发包(java.util.concurrent)中的阻塞队列是实现生产者消费者模式的理想选择。它们在内部已经处理了线程同步和等待,提供了一种高效且安全的共享数据方式。例如,`put()`...
java多线程经典模型生产者消费者java多线程经典模型生产者消费者java多线程经典模型生产者消费者java多线程经典模型生产者消费者java多线程经典模型生产者消费者java多线程经典模型生产者消费者java多线程经典模型...
生产者-消费者模式是一种经典的多线程设计模式,用于解决数据共享问题,尤其是在一个线程生产数据而另一个线程消费数据的情况下。在这个模式中,生产者负责生成数据并放入共享的数据结构(如队列),而消费者则从这...
使用wait()和notify()实现的生产者与消费者模型,可以了解如何使用wait()和notify()进行线程间通信。(上一次上传的代码有一个问题没有考虑到,这次修补了——CSDN没法撤销资源,只能再上传了)
基本满足操作系统课上要求,java实现的生产者消费者模型。
Java线程安全与生产者消费者模型是多线程编程中的两个重要概念,它们在并发处理中扮演着关键角色。在Java中,线程安全是指一个类或者方法在多线程环境下能够正确地处理数据,避免数据的不一致性或竞态条件。而生产者...
生产者消费者模式是一种经典的多线程同步问题解决方案,它源于现实世界中的生产流水线,用于描述生产者(Producer)和消费者(Consumer)之间的协作关系。在这个模式中,生产者负责生成产品并放入仓库,而消费者则从...
在实际应用中,我们常常会遇到一种典型的多线程问题——生产者消费者模型。这个模型描述了两种类型的线程:生产者线程负责创建或生产资源,而消费者线程则负责消耗这些资源。在Java中,我们可以利用同步机制来实现...
Java多线程编程是开发高并发、高性能应用的关键技术之一,而生产者消费者模式是多线程编程中常用的一种设计模式。它通过分离数据的生产和消费过程,实现了线程间的协同工作,有效避免了资源的竞争和浪费。在这个模式...
关于java多线程的东西,里面有生产者与消费者的案例,感兴趣的朋友看一下吧。
Java多线程生产者消费者模型是一种典型的线程协作模式,用于解决并发编程中资源的高效利用和同步问题。在这个模型中,"生产者"线程负责生成数据,而"消费者"线程则负责处理这些数据。为了实现这种模式,Java提供了...
用java多线程,实现生产者消费者同步和互斥的问题,操作系统中的经典问题
java 多线程 生产者消费者模式,多个生产者对多个消费者,使用jdk 线程池及 BlockingQueue实现,解决了待生产的任务生产完成后,正常终止所有线程,避免线程(特别是消费者线程)因阻塞而无限等待的情况。源码中还简单...
本实验旨在通过实际编程操作,深入理解Java中生产者与消费者模型的工作机制及其同步控制策略,具体目标为实现多生产者与多消费者之间的数据共享和线程同步。 #### 实验原理 生产者-消费者模型主要涉及到以下概念:...
用Java实现消费者与生产者两个线程进行调度
java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现...