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

How can I count how many times Thread has been suspended

我正在 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: ");
}

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

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

t.suspend() 已弃用。使用它可以停止 当前线程以外的线程。挂起的线程保留其所有 监控,因为这个状态是不可中断的,所以是死锁 俯卧

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

Synchronization-: 如果您将任何方法声明为 synchronized,则它被称为 'synchronized method'.

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

线程调用synchronized方法时,自动获取 该对象的锁并在线程完成它时释放它 任务。

像这样尝试-:

@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);

}