举报投诉联系我们 手机版 热门标签 鳄鱼CMS
您的位置:鳄鱼CMS > java当前线程sleep Java 当前线程

java当前线程sleep Java 当前线程

2023-03-06 14:31 Java教程

java当前线程sleep Java 当前线程

java当前线程sleep

Java中的sleep()方法是Thread类的一个静态方法,它可以让当前正在执行的线程暂停指定的时间,让出CPU,让其他线程有机会执行;但是sleep()方法不会释放对象锁。

sleep()方法可以使当前正在运行的线程暂停一段时间,这段时间内,该线程不会占用CPU资源;而其他正在就绪态的线程则有机会获得CPU执行权。

sleep()方法可以使当前正在运行的线程进入阻塞态(Blocked State);而其他就绪态的、可运行态的或者无限期地处于休眠态的处于就绪态或者可运行态的处于就绪态或者可运行态的处于就绪态或者可运行态的处于就绪态或者可运行态的处于就绪态或者可运行态。

public static void sleep(long millis) throws InterruptedException { 
    Thread.sleep(millis); 
}

上面是Thread.sleep()方法实例代码。该方法接收一个long型数字作为参数(单位是ms)。如果该数字大于0则当前正在执行的Thread将休眠millis ms后再重新开始执行。如果该数字为0则当前正在执行Thread将立即释放CPU并重新开始执行。

sleep()方法也有一个重载版本:public static void sleep(long millis, int nanos) throws InterruptedException ;它向上面版本增加了一个int型nanos作为参数。nanos是1/1000 000 000 秒之间隔时间即1ns之间隔时间。如果nanos大于0则当前正在执行Thread将休眠millis ms + nanos ns后再重新开始执行。如果nanos=0则当前正在执行Thread将立即释放CPU并重新开始执行。

sleep()方法也不能保证能够准时暂停特定时间;因为它不能保证具体覆盖特定时间内具体覆盖特定时间内具体覆盖特定时间内具体覆盖特定时间内具体覆盖特定时间内具体覆盖特定时间内具体覆盖特定时间内具体覆盖特定时间内中断、IO 或者 关中断、IO 或者 关中断、IO 或者 关中断、IO 或者 关中断、IO 或者 关中断、IO 或者 关中断、IO 或者 关中断、IO 或者 关中断、IO 或者 关中断、IO 或者 关中断、IO 或者 关中断、IO 或者 关中断、IO 或者 关中断、IO 或者 关interrupts 状态耗电interrupts 状态耗电interrupts 状态耗电interrupts 状态耗电interrupts 状态耗电interrupts 状态耗电interrupts 状态耗电interrupts 状态耗电interrupts 状态耗电interrupts 状态耗电interrupts 状态耗电.

Java 当前线程

Java线程教程 - Java当前线程


一个语句可以由不同的线程在不同的时间执行。

Thread类静态方法currentThread()返回调用此方法的Thread对象的引用。

考虑下面的语句:

Thread  t = Thread.currentThread();

该语句将执行上述语句的线程对象的引用分配给变量t。

例子

下面的代码演示了如何使用currentThread()方法。

两个不同的线程调用CurrentThread类的run()方法中的Thread.currentThread()方法。

该程序只打印正在执行的线程的名称。

public class Main extends Thread {
  public Main(String name) {
    super(name);
  }

  @Override
  public void run() {
    Thread t = Thread.currentThread();
    String threadName = t.getName();
    System.out.println("Inside run() method:  " + threadName);
  }

  public static void main(String[] args) {
    Main ct1 = new Main("First Thread");
    Main ct2 = new Main("Second Thread");
    ct1.start();
    ct2.start();

    Thread t = Thread.currentThread();
    String threadName = t.getName();
    System.out.println("Inside  main() method:  " + threadName);
  }
}

上面的代码生成以下结果。

当你运行一个类时,JVM启动一个名为main的线程,它负责执行main()方法。


处理线程中未捕获的异常

我们可以处理线程中抛出的未捕获异常。

它使用实现java.lang.Thread.UncaughtExceptionHandler接口的类的对象来处理。

接口被定义为Thread类中的嵌套静态接口。

下面的代码显示了一个类,它可以用作线程的未捕获异常处理程序。

class CatchAllThreadExceptionHandler implements Thread.UncaughtExceptionHandler {
  public void uncaughtException(Thread t, Throwable e) {
    System.out.println("Caught  Exception from  Thread:" + t.getName());
  }
}

public class Main {
  public static void main(String[] args) {
    CatchAllThreadExceptionHandler handler = new CatchAllThreadExceptionHandler();

    // Set an uncaught exception handler for main thread
    Thread.currentThread().setUncaughtExceptionHandler(handler);

    // Throw an exception
    throw new RuntimeException();
  }
}

上面的代码生成以下结果。



阅读全文
以上是鳄鱼CMS为你收集整理的java当前线程sleep Java 当前线程全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 鳄鱼CMS eyucms.com 版权所有 联系我们