java swing 多线程_java Swing组件的多线程,的问题

展开全部

你说的异常是指这个吗:Exception in thread "Thread-0" java.lang.IllegalMonitorStateException

at java.lang.Object.wait(Native Method)

at java.lang.Object.wait(Object.java:503)

at ShowPictureFrame$6.run(ShowPictureFrame.java:143)

另外,似乎32313133353236313431303231363533e4b893e5b19e31333332643339 lz 想要实现的功能是每隔 1 秒换图片,推荐 lz 使用 java.util.concurrent.ScheduledExecutorService

如果你要用 wait 的话,obj.wait() 是一定要包在 synchronized(obj) 里的,详见:

而且 obj.notify() 是必须从另一个线程调用的,因为这个线程一遇到 wait() 就会一直停在那里。

==========

JDK 1.5 的 ScheduledExecutorService 是用来在指定的时间执行一个 Runnable 的,跟 JDK 1.4 的 TimerTask 比起来,优点是可以处理异常。

大致框架(伪码)如下:ScheduledExecutorService executor;

start/continue {

executor = Executors.newScheduledThreadPool(1);

// 每1秒执行 cardlayout.next()

executor.scheduleAtFixedRate({cardlayout.next()}, 1s);

}

stop {

// 关闭 executor

executor.shutdown();

executor.awaitTermination(10s);

executor = null;

}

again {

cardlayout.first(); // 让 cardlayout 到第一个

start();

}

这样写还不需要 flag

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值