java中怎样让主线程暂时停止运行,直到鼠标点击按钮以后再继续运行 100

设置死循环当点按钮时使循环条件为假的方式试过,程序会卡死。使用wait()则会抛出异常。voidrunevent1(){System.out.println("run1"... 设置死循环当点按钮时使循环条件为假的方式试过,程序会卡死。使用wait()则会抛出异常。
void runevent1() {System.out.println("run1");
ArrayList<String> words=new ArrayList<String>();
words=reader.readEvent("event.txt", event1);
for(String line:words){
System.out.println(line);
/*while(event1stop){
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
event1stop=true;*/
try {
wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
展开
 我来答
hpmv
2012-03-31 · TA获得超过885个赞
知道小有建树答主
回答量:279
采纳率:0%
帮助的人:133万
展开全部
请你说明一下这个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来访问这个变量。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mquree
2012-04-15 · TA获得超过102个赞
知道答主
回答量:124
采纳率:0%
帮助的人:105万
展开全部
主线程停不了吧!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
daay1986
2012-04-09 · TA获得超过6018个赞
知道大有可为答主
回答量:2208
采纳率:0%
帮助的人:1473万
展开全部
主线程都让你停下来了,你如何能够点击按钮。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友845f74e61
2012-03-31 · TA获得超过6929个赞
知道大有可为答主
回答量:4050
采纳率:50%
帮助的人:1623万
展开全部
主线程?
不是子线程?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
果琴音016
2012-03-31 · 超过13用户采纳过TA的回答
知道答主
回答量:43
采纳率:0%
帮助的人:26.3万
展开全部
鼠标点击暂停 在点击继续吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 4条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式