两条线程的互斥合作

本文探讨了在Java中如何实现线程的互斥合作,通过一个动态显示随机Label的例子,描述了在多线程环境下遇到的问题以及解决策略。首先尝试使用单一线程控制,但由于更新速度快于repaint()导致显示问题。接着尝试两条线程,但遇到了死锁问题。最终采用计数器避免了notify与wait造成的死锁,实现了线程间的合作,但这种方案可能导致CPU资源的浪费。
摘要由CSDN通过智能技术生成

两条线程的互斥合作就是指,当一条线程在工作时另一条线程挂起。

 

问题的提出:

我想做一个动太显示随机个数的Label。

 

实现:

1)一开始用一条线程搞个随机数循环控制,不过,完成 repaint()速度远远小于控制数据的更新速度,所以实在运行时label得不到显示。

 

2)于是用两条线程来做,这样是可以的。

 

另一个问题又来了:怎样实现这两条线程的强烈互斥合作?必需要等到一条控制数据的线程把数据修改完成了,另一条控制刷新的

线程去刷新才有用啊。

 

一开始用的设计模式是:

 

thread1{

while(true){

  do1();

synchronized(1){

  1.notify();

}

synchronized(2){

   2.wait();

}

}

}

tread2{

while(true){

  do2();

synchronized(2){

 

  2.notify();

}

synchronized(1){

   1.wait();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值