多线程_生产者消费者问题代码1

来源:互联网 发布:淘宝金币怎么提现 编辑:程序博客网 时间:2024/04/28 15:46

测试类:StudentDemo

package cn.itcast_03;/* * 分析: * 资源类:Student * 设置学生数据:SetThread(生产者) * 获取学生数据:GetThread(消费者) * 测试类:StudentDemo *  * 问题1:按照思路写代码,发现数据每次都是:null----0 * 原因:我们在每个线程中都创建了新的资源,而我们要求的时候设置和获取线程的资源应该是同一个。 * 如何实现呢? * 在外界把这个数据创建出来,通过构造方法传递给其它的类。 */public class StudentDemo {public static void main(String[] args) {// 创建资源Student s = new Student();// 设置程获取的类SetThread st = new SetThread(s);GetThread gt = new GetThread(s);// 线程类Thread t1 = new Thread(st);Thread t2 = new Thread(gt);// 启动线程t1.start();t2.start();}}

资源类:Student

package cn.itcast_03;public class Student {String name;int age;}


设置学生数据:SetThread(生产者)

package cn.itcast_03;public class SetThread implements Runnable {private Student s;public SetThread(Student s) {this.s = s;}@Overridepublic void run() {// Student s = new Student();s.name = "娄艺萧";s.age = 27;}}


获取学生数据:GetThread(消费者)

package cn.itcast_03;public class GetThread implements Runnable {private Student s;public GetThread(Student s) {this.s = s;}@Overridepublic void run() {// Student s = new Student();System.out.println(s.name + "----" + s.age);}}


 
0 0