chap9-6.txt

来自「JAVA 学习资源」· 文本 代码 · 共 58 行

TXT
58
字号
// 程序9-6
class comm{	// 定义共享类
    private int n;
    private boolean bool=false; 	// 通过此共享变量实现同步

    void produce(int i) {// 产生一个数
        while(bool) {  // 若bool为真,则执行空循环,否则继续执行
         }
        n=i;		// 产生的数为n
        bool=true;	// 产生数n以后,若再调用produce则将执行空循环
        System.out.println("\n 产生数据:"+n);
    }

    void readout( ) {		// 读取一个数
        while(!bool) {  	// 若bool为假,则执行空循环,否则继续执行
         }
        bool=false;		// 读取数n以后,若再调用produce则将执行空循环
        System.out.println(" 读取数据:"+n);	// 代表读取n
    }
}

class dataProducer implements Runnable{	// 读取数据类
    comm  cm;

    dataProducer(comm c) {		// cm 和 c 代表一个对象
        cm=c;
    }

    public void run( ) {
        for(int i=0;i<5;i++)
            cm.produce((int)(Math.random( )*100));	// 生产者产生5个随机数
    }
}

class dataConsumer implements Runnable{
    comm  cm;

    dataConsumer(comm c) {
        cm=c;
    }

    public void run( ) {
        for(int i=0;i<5;i++) 		// 消费者读取数据
            cm.readout( );
    }
}

public class multTheadThree {  // 主类
    public static void main(String args[ ]) {
        comm cm=new comm( );
        Thread t1=new Thread(new dataProducer(cm)); // 产生一个无名对象作为参数
        Thread t2=new Thread(new dataConsumer(cm));
        
        t1.start( );
        t2.start( );
    }
}

⌨️ 快捷键说明

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