`

java-同步访问一个数组Integer[10],生产者不断地往数组放入整数1000,数组满时等待;消费者不断地将数组里面的数置零,数组空时等待

 
阅读更多

public class PC {

	/**
	 * 题目:生产者-消费者。
	 * 同步访问一个数组Integer[10],生产者不断地往数组放入整数1000,数组满时等待;消费者不断地将数组里面的数置零,数组空时等待。
	 */
	
	private static final Integer[] val=new Integer[10];
	private static int size=0;
	private static final int MAX_SIZE=10;
	
	public static void main(String[] args)  {
		PC pc=new PC();
		new Thread(pc.new P()).start();
		new Thread(pc.new C()).start();
	}

	public synchronized void consume(){
			while(size<=0){
				try {
					System.out.println(size+"- consume wait");
					wait();
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
			val[--size]=0;
			notifyAll();
			System.out.println("successful consume and now size="+size);
	}
	
	public  synchronized void produce(int value){ 
			while(size==MAX_SIZE){
				try {
					System.out.println(size+"- produce wait");
					wait();
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
			val[size++]=value;
			notifyAll();
			System.out.println("successful produce and now size="+size);
	}
	
	class P implements Runnable{
		public void run(){
			while(true)produce(1000);
		}
	}
	
	class C implements Runnable{
		public void run(){
			while(true)consume();
		}
	}
	
}

分享到:
评论

相关推荐

    义一个整数集合类integerSet。这种类型的对象可以存储10个20~80之间的整数,即他的内部有一个整型数组存储数据。编程:

    `: 定义了一个长度为10的整型数组,用于存储20至80之间的整数。 #### 构造函数 - `integerSet(int a[])`: 构造函数接受一个整型数组`a`作为参数,并将该数组赋值给成员变量`c`。 #### 成员方法 1. **判断两个...

    java 生产者消费者问题(源码)

    Java生产者消费者问题是多线程编程中的一个经典案例,它主要展示了如何通过共享资源来实现线程间的协作。这个问题源于现实生活中的生产流水线,其中生产者负责制造产品,而消费者负责消耗这些产品。在计算机系统中,...

    android数组资源string-array integer-array的用法

    在`DemoArray`这个示例项目中,可能包含了如何在实际项目中使用`string-array`和`integer-array`的实例,包括如何在布局文件中引用,以及在Java或Kotlin代码中访问和操作这些数组。通过查看和学习这个项目,开发者...

    数据结构(JAVA)求一个含有n个整数元素的数组a0..n-1中的最大元素

    在这个例子中,`findMaxElement`方法接收一个整型数组`arr`作为参数,初始时将最大值设为数组的第一个元素。然后,通过一个for循环从数组的第二个元素开始遍历,如果当前元素大于已知的最大值,就更新最大值。当遍历...

    java 数组的合并

    当我们需要将两个或多个数组合并成一个大的数组时,就需要用到数组的合并技术。本篇文章将详细探讨Java中如何实现数组的合并。 首先,我们要了解Java中的数组。数组是由相同类型的数据元素构成的有序集合,可以通过...

    VB程序设计-七章-数组(与“数组”有关文档共64张).pptx

    一维数组只有一个下标,定义形式如`Dim a(1 To 10) as integer`或`Dim b(10) as integer`。其中,`1 To 10`定义了下标范围,`10`则表示从1到10的下标。 2. 二维数组 二维或多维数组有多个下标,例如`Dim a(1 To 10,...

    java 中文字符串,utf-8编码为byte数组的计算过程

    在Java编程语言中,处理中文字符串时,理解字符与字节之间的转换是非常关键的。本文将深入探讨如何将中文字符串转换成UTF-8编码的字节数组,并解析这一过程中的计算步骤。UTF-8是一种广泛使用的Unicode字符编码,它...

    从n个数组中取出所有排列组合(Java实现)

    对于数组排列组合问题,我们可以设计一个递归函数,从每个数组的第一个元素开始,依次尝试将每个元素放入结果数组,并递归处理剩余的元素和数组。 以下是一个简单的Java实现思路: 1. 定义一个递归函数,接收当前...

    python教程-05-数组的定义和数组的操作.ev4.rar

    在Python编程语言中,数组是一种非常重要的数据结构,它允许我们存储多个同类型的数据项,并且可以方便地进行各种操作。本教程将深入探讨Python中的数组定义与操作,特别是通过"python教程-05-数组的定义和数组的...

    java--数组.txt

    在Java中,当我们声明一个数组时,例如`MyClass[] arr = new MyClass[9];`,实际上是在创建一个数组对象,并分配了9个可以存放`MyClass`类型的元素的空间。这与创建普通对象如`MyClass obj = new MyClass();`有着...

    java-抽取数组中的数字元素并排序-代码

    为了实现这一点,我们可以将`ArrayList&lt;Integer&gt;`转换为一个`Integer`数组,然后再转换为`int`数组以便于排序: ```java Integer[] ia = list.toArray(new Integer[0]); int result[] = new int[ia.length]; for ...

    java 数组求和计算

    在Java编程语言中,数组是一种数据结构,用于存储固定数量的相同类型的数据。数组求和计算是编程中常见的任务,特别是在处理数据集时。这里我们将深入探讨如何在Java中进行数组求和计算,并讨论相关的一些扩展知识。...

    Java实现将数组的子数组a[0:k]和a[k+1:n-1]进行换位的算法

    该方法接受一个整数数组`array`和一个整数`k`作为参数,表示要交换的子数组的边界。 ```java public class ArrayChangePosition { public static void swapSubarrays(int[] array, int k) { // 检查输入参数的...

    Java 实例 - 计算两个数组交集源代码-详细教程.zip

    在Java编程中,计算两个数组的交集是一项常见的任务,特别是在数据处理、算法实现和集合操作等场景。这个实例教程将深入讲解如何使用Java来找到两个整数数组的共同元素,即它们的交集。本教程包含源代码,旨在帮助...

    Java中数组的各种应用

    在Java编程语言中,数组是一种基础且重要的数据结构,它允许程序员存储同类型的多个元素。本文将深入探讨Java中数组的各种应用,旨在帮助初学者理解并掌握数组的使用。 一、数组定义与初始化 在Java中,数组可以...

    生产者消费者问题 Java实现

    在生产者消费者问题的Java实现中,通常会使用一个有界缓冲区来存储数据。这个缓冲区可以用数组或`BlockingQueue`来实现。`BlockingQueue`是一个线程安全的数据结构,它内置了同步机制,可以避免死锁和资源浪费。 ...

    Java 实例 - 计算两个数组并集源代码-详细教程.zip

    在本教程中,我们将深入探讨如何使用Java编程语言计算两个数组的并集。数组是Java中最基本的数据结构之一,用于存储一系列相同类型的元素。而数组的并集是指包含所有不同元素的新数组,无论这些元素最初来自哪个数组...

    java实验数组和集合

    在本实验的 Java 代码中,我们首先声明了一个大小为 10 的整型数组 `score`,用于存储十个评委的打分。然后,我们使用 `for` 循环遍历数组,并将用户输入的字符串转换为整数,并将其存储到数组中。 接下来,我们...

    Java数组相关的例子代码

    在Java编程语言中,数组是一种基础且重要的数据结构,它允许程序员存储一组具有相同类型的数据。数组的概念简单来说就是内存中连续存储的同一类型元素的集合。本篇将深入探讨Java数组的相关知识点,并通过实际的例子...

    Java实现遍历一个数组

    在Java中,我们可以声明并初始化一个数组如下: ```java // 声明一个整型数组,长度为5 int[] numbers = new int[5]; ``` 或者,同时初始化数组的元素: ```java // 初始化一个包含5个元素的整型数组 int[]...

Global site tag (gtag.js) - Google Analytics