我如何计算线程被挂起的次数
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);
}
我正在 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);
}