欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > java >内容正文

java

java线程中notify_Java多线程中关于notify和wait

发布时间:2025/4/16 java 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 java线程中notify_Java多线程中关于notify和wait 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

程序功能:4个线程,2个线程对某个数值进行加1;2个线程进行减1,要求该数在0和1之间切换。程序如下,大家看看问题出在哪里:

DecThread类,对sample的i进行减1的线程:

public class DecThread extends Thread{

private Sample sample;

public DecThread(Sample sample, String name){

super(name);

this.sample = sample;

}

@Override

public void run() {

for(int i=0; i<20; i++){

sample.dec();

}

}

}

IncThread 类,对sample的i进行加1的线程:

public class IncThread extends Thread{

private Sample sample;

public IncThread(Sample sample, String name){

super(name);

this.sample = sample;

}

@Override

public void run() {

for(int i=0; i<20; i++){

sample.inc();

}

}

}

Sample类:

public class Sample {

int i = 0;

public synchronized void inc() {

try {

while (i == 1) {

wait();

}

i++;

System.out.println(Thread.currentThread().getName() + "-" + i);

notify();

} catch (InterruptedException e) {

e.printStackTrace();

}

}

public synchronized void dec() {

try {

while (i == 0) {

wait();

}

i--;

System.out.println(Thread.currentThread().getName() + "-" + i);

notify();

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

测试类TestIncDec :

public class TestIncDec {

public static void main(String[] args) {

Sample sample = new Sample();

IncThread inc1 = new IncThread(sample,"inc1");

IncThread inc2 = new IncThread(sample,"inc2");

DecThread dec1 = new DecThread(sample,"dec1");

DecThread dec2 = new DecThread(sample,"dec2");

inc1.start();

inc2.start();

dec1.start();

dec2.start();

}

}

总结

以上是生活随笔为你收集整理的java线程中notify_Java多线程中关于notify和wait的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。