题目描述:
有4个线程和1个公共的字符数组。线程1的功能就是向数组输出A,线程2的功能就是向字符输出B,线程3的功能就是向数组输出C,线程4的功能就是向数组输出D。要求按顺序向数组赋值ABCDABCDABCD,ABCD的个数由线程函数1的参数指定。
Java实现:
import java.util.Scanner;
//临界资源
class CharBuffer{
private StringBuffer value = new StringBuffer();//共享变量
private int num = 0;//添加次数
private int order = 0;//信号量
public String getVal() {
return value.toString();
}
public CharBuffer(int num) {
this.num = num;
}
//临界区
public synchronized void put(char c, int order) {
if (this.order != order) {
try {
this.wait();//将锁让出来
} catch (InterruptedException e) {
e.printStackTrace();