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();
}
}
}
分享到:
相关推荐
`: 定义了一个长度为10的整型数组,用于存储20至80之间的整数。 #### 构造函数 - `integerSet(int a[])`: 构造函数接受一个整型数组`a`作为参数,并将该数组赋值给成员变量`c`。 #### 成员方法 1. **判断两个...
Java生产者消费者问题是多线程编程中的一个经典案例,它主要展示了如何通过共享资源来实现线程间的协作。这个问题源于现实生活中的生产流水线,其中生产者负责制造产品,而消费者负责消耗这些产品。在计算机系统中,...
在`DemoArray`这个示例项目中,可能包含了如何在实际项目中使用`string-array`和`integer-array`的实例,包括如何在布局文件中引用,以及在Java或Kotlin代码中访问和操作这些数组。通过查看和学习这个项目,开发者...
在这个例子中,`findMaxElement`方法接收一个整型数组`arr`作为参数,初始时将最大值设为数组的第一个元素。然后,通过一个for循环从数组的第二个元素开始遍历,如果当前元素大于已知的最大值,就更新最大值。当遍历...
当我们需要将两个或多个数组合并成一个大的数组时,就需要用到数组的合并技术。本篇文章将详细探讨Java中如何实现数组的合并。 首先,我们要了解Java中的数组。数组是由相同类型的数据元素构成的有序集合,可以通过...
一维数组只有一个下标,定义形式如`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编码的字节数组,并解析这一过程中的计算步骤。UTF-8是一种广泛使用的Unicode字符编码,它...
对于数组排列组合问题,我们可以设计一个递归函数,从每个数组的第一个元素开始,依次尝试将每个元素放入结果数组,并递归处理剩余的元素和数组。 以下是一个简单的Java实现思路: 1. 定义一个递归函数,接收当前...
在Python编程语言中,数组是一种非常重要的数据结构,它允许我们存储多个同类型的数据项,并且可以方便地进行各种操作。本教程将深入探讨Python中的数组定义与操作,特别是通过"python教程-05-数组的定义和数组的...
在Java中,当我们声明一个数组时,例如`MyClass[] arr = new MyClass[9];`,实际上是在创建一个数组对象,并分配了9个可以存放`MyClass`类型的元素的空间。这与创建普通对象如`MyClass obj = new MyClass();`有着...
为了实现这一点,我们可以将`ArrayList<Integer>`转换为一个`Integer`数组,然后再转换为`int`数组以便于排序: ```java Integer[] ia = list.toArray(new Integer[0]); int result[] = new int[ia.length]; for ...
在Java编程语言中,数组是一种数据结构,用于存储固定数量的相同类型的数据。数组求和计算是编程中常见的任务,特别是在处理数据集时。这里我们将深入探讨如何在Java中进行数组求和计算,并讨论相关的一些扩展知识。...
该方法接受一个整数数组`array`和一个整数`k`作为参数,表示要交换的子数组的边界。 ```java public class ArrayChangePosition { public static void swapSubarrays(int[] array, int k) { // 检查输入参数的...
在Java编程中,计算两个数组的交集是一项常见的任务,特别是在数据处理、算法实现和集合操作等场景。这个实例教程将深入讲解如何使用Java来找到两个整数数组的共同元素,即它们的交集。本教程包含源代码,旨在帮助...
在Java编程语言中,数组是一种基础且重要的数据结构,它允许程序员存储同类型的多个元素。本文将深入探讨Java中数组的各种应用,旨在帮助初学者理解并掌握数组的使用。 一、数组定义与初始化 在Java中,数组可以...
在生产者消费者问题的Java实现中,通常会使用一个有界缓冲区来存储数据。这个缓冲区可以用数组或`BlockingQueue`来实现。`BlockingQueue`是一个线程安全的数据结构,它内置了同步机制,可以避免死锁和资源浪费。 ...
在本教程中,我们将深入探讨如何使用Java编程语言计算两个数组的并集。数组是Java中最基本的数据结构之一,用于存储一系列相同类型的元素。而数组的并集是指包含所有不同元素的新数组,无论这些元素最初来自哪个数组...
在本实验的 Java 代码中,我们首先声明了一个大小为 10 的整型数组 `score`,用于存储十个评委的打分。然后,我们使用 `for` 循环遍历数组,并将用户输入的字符串转换为整数,并将其存储到数组中。 接下来,我们...
在Java编程语言中,数组是一种基础且重要的数据结构,它允许程序员存储一组具有相同类型的数据。数组的概念简单来说就是内存中连续存储的同一类型元素的集合。本篇将深入探讨Java数组的相关知识点,并通过实际的例子...
在Java中,我们可以声明并初始化一个数组如下: ```java // 声明一个整型数组,长度为5 int[] numbers = new int[5]; ``` 或者,同时初始化数组的元素: ```java // 初始化一个包含5个元素的整型数组 int[]...