gpt4 book ai didi

java - 从线程捕获 ActionEvents

转载 作者:行者123 更新时间:2023-12-01 13:53:49 26 4
gpt4 key购买 nike

我需要做的是一个生产者/消费者程序。我需要做 2 个生产者线程(第一个将继续发送 AcionEvent,间隔 4 秒,第二个将执行相同的操作,间隔 10 秒)。消费者线程需要是带有 JTextArea 的 JFrame。我需要实现 ActionPerformedListner 来捕获生产者创建的事件。当我 catch 第一个时,我什至需要清除 JTextArea 文本。当我捕捉第二个事件时,我需要用一些文本填充它。我不知道如何将 ActionEvent 发送到消费者线程。有什么帮助吗?

最佳答案

没有那么难的伙伴,首先两个线程(生产者/消费者)应该处于等待状态,为此你需要两个对象,一个用于向第一个线程发出信号,第二个用于第二个线程.
注意,这里可能不需要生产者的两个线程。
类似这样的东西。

final Object producer=new Object();//used for signaling the thread about the incoming event
final Object signalConsumer;//used for signaling consumer thread.
void run(){
while(true){//until end of the system life cycle, use a flag, or set the thread daemon
try{
synchronized(producer){producer.wait();}
Thread.sleep(4000);//sleep for 4 s
synchronized(consumer){signalConsumer.notify();}//send the first signal to consumer to clear the textbox
Thread.sleep(10000);//sleep for 10 seconds
synchronized(consumer){signalConsumer.notify();}//send the second signal to consumer for filling the textbox
}catch(Exception ex){}
}
}

还有消费者线程。Final Object signalConsumer=new Object();//将引用传递给生产者线程。

void run(){
while(true){
try{
synchronized(signalConsumer){signalConsumer.wait();}//waiting for the first signal
//clearing textbox, etc...
synchronized(signalConsumer){signalConsumer.wait();}//waiting for the second signal
//filling the textbox, etc...
}catch(Exception ex){}
}
}

并且在捕获事件的 UI 线程中,只需通知生产者线程即可。

关于java - 从线程捕获 ActionEvents,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19756940/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com