package thread;
import java.util.Objects;
/*
生产者消费者
*/
public class ThreadTest14 {
public static void main(String[] args) {
Student student = new Student(0);
Thread t1 = new Thread(new producers(student));
Thread t2 = new Thread(new consumers(student));
t1.setName("t1线程");
t2.setName("t2线程");
t1.start();
t2.start();
}
}
class Student{
int num;
public Student() {
}
public Student(int num) {
this.num = num;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return num == student.num;
}
@Override
public int hashCode() {
return Objects.hash(num);
}
}
//生产者
class producers implements Runnable{
private Student s;
public producers(Student s){
this.s = s;
}
@Override
public void run() {
while (true) {
synchronized (s){
if(s.num%2!=0){
try {
s.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
s.num++;
System.out.println(Thread.currentThread().getName() +"--->" + s.num);
s.notify();
}
}
}
}
//消费者
class consumers implements Runnable{
private Student s;
public consumers(Student s){
this.s = s;
}
@Override
public void run() {
while (true) {
synchronized (s){
if(s.num%2==0){
try {
s.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
s.num++;
System.out.println(Thread.currentThread().getName() +"--->" + s.num);
s.notify();
}
}
}
}
线程交替输出
最新推荐文章于 2024-04-13 06:30:22 发布