首页 > 编程语言 > 详细

关于线程等待、线程唤醒方法的引入

时间:2019-04-13 14:17:40      阅读:117      评论:0      收藏:0      [点我收藏+]
public final void wait()
                throws InterruptedException  线程等待


public final void notify()    线程唤醒
  1 public class Student {
  2     private String name;
  3     private int age;
  4 
  5     public Student(String name, int age) {
  6         super();
  7         this.name = name;
  8         this.age = age;
  9     }
 10 
 11     public Student() {
 12 
 13     }
 14 
 15     public int getAge() {
 16         return age;
 17     }
 18 
 19     public void setAge(int age) {
 20         this.age = age;
 21     }
 22 
 23     public String getName() {
 24         return name;
 25     }
 26 
 27     public void setName(String name) {
 28         this.name = name;
 29     }
 30 
 31     @Override
 32     public String toString() {
 33         return "Student [name=" + name + ", age=" + age + "]";
 34     }
 35 
 36 }
 37 
 38 /**
 39  * 生产学生的类
 40  * 
 41  * @author Administrator
 42  *
 43  */
 44 public class SetStudent implements Runnable {
 45     private Student student;
 46 
 47 //    可以通过构造方法确定操作的是同一个学生
 48     public SetStudent(Student student) {
 49         this.student = student;
 50     }
 51 
 52 //    重写的run方法,让他调用生产学生的方法
 53     @Override
 54     public void run() {
 55         createStudent();
 56     }
 57 
 58 //  生产学生”张三“
 59     public void createStudent() {
 60         while (true) {
 61             student.setName("张三");
 62             student.setAge(11);
 63         }
 64     }
 65 
 66 }
 67 
 68 
 69 /**
 70  * 消费学生的类:输出学生
 71  * 
 72  * @author Administrator
 73  *
 74  */
 75 public class GetStudent implements Runnable {
 76     private Student student;
 77 
 78     @Override
 79     public void run() {
 80         getStudent();
 81 
 82     }
 83 
 84     public GetStudent(Student student) {
 85         this.student = student;
 86     }
 87 
 88 //   输出学生
 89     public void getStudent() {
 90         while (true) {
 91             System.out.println(student);
 92         }
 93 
 94     }
 95 }
 96 
 97 
 98 public class StudentTest {
 99     public static void main(String[] args) {
100 //        主方法创建一个学生,并通过参数传递赋给生产者和消费者,引用变量,传递同一个学生的引用地址,保证操作的都是一个对象
101         Student student = new Student();
102         SetStudent setStu = new SetStudent(student);
103         GetStudent getStu = new GetStudent(student);
104 //        创建线程
105         Thread setStudent = new Thread(setStu);
106         Thread getStudent = new Thread(getStu);
107 //        开启线程
108         setStudent.start();
109         getStudent.start();
110     }
111 }
112 //执行结果:
113 //Student [name=张三, age=11]
114 //Student [name=张三, age=11]
115 //Student [name=张三, age=11]
116 //Student [name=张三, age=11]
117 //Student [name=张三, age=11]
118 //Student [name=张三, age=11]
119 //Student [name=张三, age=11]
120 //Student [name=张三, age=11]
121 //Student [name=张三, age=11]
122 //Student [name=张三, age=11]
123 //Student [name=张三, age=11]
124 //Student [name=张三, age=11]
125 //Student [name=张三, age=11]
126 //Student [name=张三, age=11]
127 //Student [name=张三, age=11]
128 //Student [name=张三, age=11]
129 /**
130  * 这里可以看到生产者和消费者使用的对象都是同一个,但是,如果生产者生产的是两个人,张三和大黄蜂呢?
131  */

 

 

关于线程等待、线程唤醒方法的引入

原文:https://www.cnblogs.com/19322li/p/10700939.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!