- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的乒乓球游戏中,每个对象(球和两个 Racket )都在独立线程中运行。
static Ball b = new Ball(195, 145);
Thread ball = new Thread(b);
Thread paddle1 = new Thread(b.paddle1);
Thread paddle2 = new Thread(b.paddle2);
public void startGame(){
gameStarted = true;
ball.start();
paddle1.start();
paddle2.start();
}
我想在按下 ESC 时将游戏设置为暂停,并在再次按下 ESC 时设置游戏 - 继续游戏。所以在 keyPressed 事件中我这样做了
if (e.getKeyCode() == KeyEvent.VK_ESCAPE){
if (gameStarted) {
gameStarted = false;
ballCurrentX = b.x; //save all states
ballCurrentY = b.y;
ballXDirection = b.xDirection;
ballYDirection = b.yDirection;
p1Score = b.p1Score;
p2Score = b.p2Score;
p1CurrentY = b.paddle1.y;
p2CurrentY = b.paddle2.y;
try {
ball.interrupt();
ball.join();
paddle1.interrupt();
paddle1.join();
paddle2.interrupt();
paddle2.join();
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
else {
gameStarted = true;
continueGame();
}
}
要继续游戏 - 我重新启动所有线程,但为之前游戏状态的对象设置参数
public void continueGame(){
gameStarted = true;
b = new Ball(ballCurrentX, ballCurrentY);
b.xDirection = ballXDirection;
b.yDirection = ballYDirection;
b.p1Score = p1Score;
b.p2Score = p2Score;
b.paddle1.y = p1CurrentY;
b.paddle2.y = p2CurrentY;
ball.start();
paddle1.start();
paddle2.start();
}
但是程序抛出IllegalThreadStateException
并且游戏无法继续。有什么问题?它不会停止线程?
最佳答案
To continue game - I restart all threads ...
您无法重新启动 Java 线程。 Thread.start()
的 javadoc声明如下:
" It is never legal to start a thread more than once. In particular, a thread may not be restarted once it has completed execution."
"Throws:
IllegalThreadStateException
- if the thread was already started."
您需要创建新的线程对象并启动它们,或者找出某种方法来告诉现有线程在中断时进入应用程序定义的“暂停”状态,并在那里等待,直到被告知“恢复” ”。
关于java - 程序抛出 IllegalThreadStateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14797747/
这个问题是我之前关于堆栈溢出的问题的延续how-to-download-images-asynchronously-from-web-server 。我正在努力在黑莓中制作异步列表。现在它对我来说工作
在我的乒乓球游戏中,每个对象(球和两个 Racket )都在独立线程中运行。 static Ball b = new Ball(195, 145); Thread ball = new Thread(
我的一些用户一直在报告 IllegalThreadStateExceptions,这导致返回以下代码。我无法重新创建它,大多数人都能够毫无问题地执行这部分代码。 代码会定期重新执行,所以旧线程应该被新
我正在尝试多线程,想要实现一个小程序来同时下载多个文件。我创建了一个扩展 Thread 的 FileDownloader 类。 总的来说,我的想法是创建一个包含所有相关 FileDownload 对象
我在 android studio 中有一个 android 应用程序的代码,可以在 1 秒延迟后运行一个方法: new java.util.Timer().schedule(
我一直在研究月球着陆器示例,但在尝试实现关于屏幕时遇到了问题。我将其中一个菜单项(在 onCreateOptionsMenu 中)更改为“关于”选项。选择此选项后,将启动一个新的 Activity 并
这是一个多线程练习,我使用监视器来同步线程。我的监视器或同步没有问题,没有死锁。我想在主线程中创建一些线程。下面的代码生成线程,将它们添加到 ArrayList 并启动它们。使用 switch-cas
import java.io.*; class Sysexecute { public static void main(String args[]) throws IOException,I
我在使用以下代码时遇到 IllegalThreadStateException 异常:我已经启动了这个线程一次(通过使用 thread.start())并再次尝试在另一个地方启动它,所以使用了以下代码
我正在处理线程。但是,当我尝试启动一个线程时,我得到一个异常。在具体的 java.lang.IllegalThreadStateException 中。我的代码是: public void readC
我正在对一个应用程序执行负载测试,并且有5个线程。我希望所有线程都可以随机运行,因此知道设备上的负载。假设运行所有线程的次数为5,则所有线程应成功运行5次而没有IllegalThreadStateEx
根据 中提到的错误,我们的应用每天会收到大约 1k 次崩溃。 OneSignal的 github issues . 错误说明: 不幸的是,我无法重现此问题。所有的崩溃都来自 Crashlytics 报
我收到 IllegalThreadStateException。 在 Eclipse 的调试器下一切正常,但当我尝试在 Firefox 上测试它时,它开始失败。第一次运行正常,刷新网页后出现异常。 这
需要制作一个音乐播放器作为我的简单java项目。它打开一个文件并将名称加载到文本字段中。当按下“播放”按钮时,该名称会在文本字段中圈出,当按下“暂停”按钮时,该圈圈会暂停。播放暂停是 JToggleb
错误消息是java.lang.IllegalThreadStateException(位于timeOutControl.start()行)。可能是什么原因? TimeOutControl timeOu
我有一个java程序,需要很长时间才能编译。 出于测试目的,如果编译需要很长时间,我想终止该程序并重新启动它。 这是我的代码的简化版本: public class Main { public
try { this.interrupt(); } catch (IllegalThreadStateException e) { e.printStackTrace(); } 我发现
只是来完善我的应用程序并使其在用户离开后恢复。当应用程序恢复时,我得到一个 IllegalThreadStateException,这很烦人。这个问题出现在谷歌给出的例子中 Lunar Lander
在 Java 中,我得到这个异常: Exception in thread "main" java.lang.IllegalThreadStateException at java.lang.
我的程序中有 2 个线程和一个主类,每当我尝试运行它时,一个线程就会给我一个 IllegalThreadStateException,我不知道为什么。程序需要进行一场龟兔赛跑,乌龟可以移动10米,直到
我是一名优秀的程序员,十分优秀!