课程编号:B080000070《操作系统》实验报告班级指导教师实验名称《操作系统》实验开设学期2016-2017 第二学期开设时间第 11 周——第 18 周报告日期2017 年 7 月 3 日评定成绩评定人评定日期2017 年 7 月 5 日东北大学软件学院实验一进程的同步与互斥名姓实验题目:通过学习和分析基础例子程序,使用 windows 进程和线程编程(也可以采用 Java 或 Unix/Linux 的 POSIX 线程编程)实现一个简单的生产者/消费者问题的程序。关键代码:importjava.util.ArrayList;publicclassProduce{publicObjectobject;publicArrayListlist;//用 list 存放生产之后的数据,最大容量为 1publicProduce(Objectobject,ArrayListlist){this.object=object;this.list=list;}publicvoidproduce(){synchronized(object){/*只有 list 为空时才会去进行生产操作*/try{while(!list.isEmpty()){System.out.println(生产者+Thread.currentThread().getName()+);object.wait();}intvalue=9999;list.add(value);System.out.println(生产者+Thread.currentThread().getName()+);object.notifyAll();//然后去唤醒因 object 调用 wait 方法处于阻塞状态的线程}catch(InterruptedExceptione){e.printStackTrace();}}}}importjava.util.ArrayList;publicclassConsumer{publicObjectobject;publicArrayListlist;//用 list 存放生产之后的数据,最大容量为 1publicConsumer(Objectobject,ArrayListlist){this.object=object;this.list=list;}publicvoidconsmer(){synchronized(object){try{/*只有 list 不为空时才会去进行消费操作*/while(list.isEmpty()){System.out.println(消费者+Thread.currentThread().getName()+);object.wait();}list.clear();System.out.println(消费者+Thread.currentThread().getName()+);object.notifyAll();//然后去唤醒因 object 调用 wait 方法处于阻塞状态的线程}catch(InterruptedExceptione){e.printStackTrace();}}}}实验结果:□_Problem1-Javadoc.DeclarationSConsoleu«Work^p^ceMigration^JAX-WSAnnotations 吠 JPAAnnota^onfZSpringA^notatiomMoG(JavaApplication]C\App\niyecSpsc\binoryXconisunjovojdkdwinl?x66_64_1,0.0vl12\bin^ovawexc{20174r7^7a 下午 6;29;14),住产看主产舌 2Rurr 或 K生产舌生产右 2waiting消费者消身舌 1RunnableI ...