目录
- 一.sleep()方法
- 二.getId()方法
一.sleep()方法
方法sleep() 的作用是在指定的毫秒数内让当前“正在执行的线程”休眠(暂停执行)。这个“正在执行的线程”是指 this.currentThread() 返回的线程。
下面通过一个示例进行说明。使用 sleep() 方法判断线程是否活动的标准:
先创建项目Sleep,再创建类MyThread.java代码如下:
public class MyThread extends Thread {
@Override
public void run(){
try {
System.out.println("正在运行的线程名称:"+this.currentThread().getName()+"开始");
Thread.sleep(2000);//延时2秒
System.out.println("正在运行的线程名称:"+this.currentThread().getName()+" 结束");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
再创建Run.java代码如下:
public class Run {
public static void main(String[] args)
{
MyThread myThread = new MyThread();//创建MyThread线程实例
System.out.println("开始时间=" + System.currentTimeMillis());
myThread.run();
System.out.println("结束时间=" + System.currentTimeMillis());
}
}
直接调用run()方法,程序运行结果如图:
主线程创建一个 MyThread 线程实例之后直接调用 run() 方法启动线程,整个过程都在主线程中完成,并且将main线程暂停了2秒。说明子线程中的延时导致主线程也进行了延时。
下面再看一个示例,先创建一个类Mythread2.java代码如下:
public class MyThread2 extends Thread {
@Override
public void run()
{
try
{
System.out.println("正在运行的线程名称:" + this.currentThread().getName() + " 开始时间=" + System.currentTimeMillis());
Thread.sleep(2000); //延时2秒
System.out.println("正在运行的线程名称:" + this.currentThread().getName() + " 结束时间="+System.currentTimeMillis());
}
catch(InterruptedException e){
//TODO Auto-generated catch block
e.printStackTrace();
}
}
}
再创建类Run2.java代码如下:
public class Run2 {
public static void main(String[] args) {
MyThread2 myThread = new MyThread2();//创建MyThread线程实例
System.out.println("主线程开始时间="+System.currentTimeMillis());
myThread.start();
System.out.println("主线程结束时间="+System.currentTimeMillis());
}
}
使用statr()方法启动程序,将看到如下所示运行效果。
由于 main 线程与 MyThread2线程是异步执行的,所以首先打印的为主线程开始时间和主线程结束时间的主线程信息。而 MyThread2 线程是随后运行的,在最后两行打印的是正在运行的线程名称的和开始时间,正在运行的线程名称的和结束时间的相关信息。
主线程不存在Thread(),没有休眠时间,所以并不会受到sleep()的影响。而线程Thread-0因为有休眠,所以它存在延时现象。
二.getId()方法
getId()方法的作用是获取线程的唯一标识。
下面通过一个示例进行说明。先创建项目GetId,再创建Test.java类,代码如下:
package test;
public class Test {
public static void main(String[] args) {
Thread runThread = Thread.currentThread();
System.out.println(runThread.getName() + " " + runThread.getId());
}
}
程序运行的效果如图所示:
获取线程名称及Id值
从打印的运行结果来看,当前执行代码的线程名称为main,线程i值为1。
以上代码下载请点击该链接:https://github.com/Yarrow052/Java-package.git