java中怎样让主线程暂时停止运行,直到鼠标点击按钮以后再继续运行
答案:5 悬赏:20 手机版
解决时间 2021-04-06 17:44
- 提问者网友:自食苦果
- 2021-04-06 09:25
java中怎样让主线程暂时停止运行,直到鼠标点击按钮以后再继续运行
最佳答案
- 五星知识达人网友:轻熟杀无赦
- 2021-04-06 10:46
请你说明一下这个runevent1过程是哪个线程上运行的。如果这个线程是Swing GUI线程则无法实现(因为按钮运行在Swing GUI线程)。如果是其他线程,那么声明一个共用变量,比如叫lock,则在主线程:
synchronized(lock) {
lock.wait();
}
(每次wait()都要synchronized,这是Java的一个准则)
然后再按钮点击的事件里:
synchronized(lock) {
lock.notify();
}
对了,不要直接调用wait(),因为那样等于调用this.wait(), 结果不堪设想。你要用一个其他的Object, 比如一个class里面的一个static变量:
public static final Object lock = new Object();追问runevent1在主线程上,什么叫共用变量?追答共用变量就是两个线程都能访问的变量。这个放在哪取决于具体情况。比如:
class Utils {
public static final Object myLock = new Object();
}
那这个myLock就可以作为共用变量。两个线程都可以用Utils.myLock来访问这个变量。追问那个runtime1好像是在GUI的线程上,因为是另一个按钮调用了一个方法,然后那个方法调用了runtime1,。这种情况下应该怎么办呢?
synchronized(lock) {
lock.wait();
}
(每次wait()都要synchronized,这是Java的一个准则)
然后再按钮点击的事件里:
synchronized(lock) {
lock.notify();
}
对了,不要直接调用wait(),因为那样等于调用this.wait(), 结果不堪设想。你要用一个其他的Object, 比如一个class里面的一个static变量:
public static final Object lock = new Object();追问runevent1在主线程上,什么叫共用变量?追答共用变量就是两个线程都能访问的变量。这个放在哪取决于具体情况。比如:
class Utils {
public static final Object myLock = new Object();
}
那这个myLock就可以作为共用变量。两个线程都可以用Utils.myLock来访问这个变量。追问那个runtime1好像是在GUI的线程上,因为是另一个按钮调用了一个方法,然后那个方法调用了runtime1,。这种情况下应该怎么办呢?
全部回答
- 1楼网友:一叶十三刺
- 2021-04-06 16:20
鼠标点击暂停 在点击继续吗
- 2楼网友:洒脱疯子
- 2021-04-06 14:41
主线程停不了吧!
- 3楼网友:从此江山别
- 2021-04-06 13:13
主线程?
不是子线程?
不是子线程?
- 4楼网友:神的生死簿
- 2021-04-06 12:05
主线程都让你停下来了,你如何能够点击按钮。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯