⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 synimp.java

📁 Java程序设计培训教程2
💻 JAVA
字号:
/**类SynImp用于共享数据资源,该类加入了同步控制机制,控制同一时刻只有一个线程取出数据和写入数据*/
class SynImp{
	/*定义一个成员变量index,用于控制数据的读写操作*/
	private int index = 0;
	/*声明一个整型数组,用来存放共享数据*/
	private int[] data = new int[4];
	/**方法popup()用于从共享数据中取出数据*/
	public synchronized int popup(){
		/*如果index为0,表示存放共享数据的数组中已经没有共享数据,将当前线程放入wait队列,并释放持有的互斥锁*/
		while(index==0){
			try{
				this.wait();
			}catch(InterruptedException e){
			}
		}
		/*当index不为0时,将线程从wait队列中唤醒,并将线程移入互斥锁申请队列*/
		this.notify();
		/*将index减一,以返回正确的值*/
		index--;
		return data[index];
	}
	/**push(int temp)方法用于向共享数据数组中写入数据*/
	public synchronized void push(int temp){
		/*while循环用于处理当前数组中数据已满的情况*/
		while(index==data.length){
			try{
				/*当数据已满时,让当前线程进入wait队列,并释放互斥锁*/
				this.wait();
				/*输出数组表示的数据堆栈中最上面的数据元素*/
				System.out.println("data["+index+"]: "+data[index]);
			}catch(InterruptedException e){
			}
		}
		/*如果数据未满,将线程唤醒,并将线程移入互斥锁申请队列*/
		this.notify();
		/*设置index位置上的数据元素*/
		data[index]=temp;
		/*使index加一,以进行下一次处理*/
		index++;
	}
}
	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -