gpt4 book ai didi

java - 如何计算线程被挂起的次数

转载 作者:行者123 更新时间:2023-12-02 13:41:11 25 4
gpt4 key购买 nike

我正在用 java 编写一个非常简单的程序,即使我是一名学生。我编写了一个程序,在 1000 处计数 1,当数字是 2 的倍数时,线程会挂起大约 500 毫秒。没关系。但在最后,我需要显示线程被挂起的次数。喜欢

System.out.println("The thread has been suspended for: " );

我不知道。我感谢任何帮助。

@Override
public void run () {
for (int i = 0; i < 1000; i++) {
if (i % 2 == 0) {
try {
System.out.println(i);
Thread.sleep(500);

} catch (InterruptedException ex) {
Logger.getLogger(ThreadNumeros.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
System.out.println("thread has been suspended for: ");
}

最佳答案

请勿将(暂停)与( sleep )混合:它们的工作方式不同。

Thread.sleep() 将当前线程发送到“Not “可运行”状态持续一段时间。线程保持监视器 它已经获取了——即如果线程当前处于同步状态 block 或方法没有其他线程可以进入此 block 或方法。如果 另一个线程调用t.interrupt()它将唤醒正在 sleep 的线程 线程。

t.suspend() 已弃用。使用它可以停止 当前线程以外的线程。挂起的线程保留其所有 监视器,并且由于该状态不可中断,因此是死锁 容易发生。

stop()、suspend()、resume()是线程使用的方法 执行。 stop() - 终止线程执行,一旦线程 停止后,无法使用 start() 方法重新启动,因为 stop() 将终止线程的执行。相反,你可以暂停 使用 sleep() 方法执行线程。该线程将 hibernate 一段时间,然后开始执行 已达到时间限制。但是,如果线程需要,这并不理想 当特定事件发生时启动。在这种情况下,挂起() 方法允许线程暂时停止执行。 resume() 方法 允许挂起的线程再次启动。

同步-:如果将任何方法声明为同步,则该方法称为“同步方法”。

同步方法用于锁定任何共享资源的对象。

当线程调用同步方法时,它会自动获取 该对象的锁并在线程完成其操作时释放它 任务。

尝试这样-:

@Override
public void run() {
int count = 0;
for (int i = 0; i < 1000; i++) {
if (i % 2 == 0) {
try {
System.out.println(i);
Thread.sleep(500);
count+=1

} catch (InterruptedException ex) {
Logger.getLogger(ThreadNumeros.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
System.out.println("thread has been suspended for: "+count);

}

关于java - 如何计算线程被挂起的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42739350/

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