线程的休眠
import java.util.Date;
import java.util.concurrent.TimeUnit;
public class ThreadDemo10 {
public static void main(String[] args) throws InterruptedException {
System.out.println("开始时间:" + new Date());
/*//休眠1s
Thread.sleep(1000);
//休眠的实现方式2
TimeUnit.SECONDS.sleep(1); //休眠1s
*/
//休眠的实现方式3
Thread.sleep(TimeUnit.SECONDS.toMillis(1));
System.out.println("结束时间:" + new Date());
}
}
线程的分组
import java.util.Random;
public class ThreadDemo12 {
public static void main(String[] args) {
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("开始起跑了" +
Thread.currentThread().getName());
try {
int num = 1 + new Random().nextInt(5);
Thread.sleep(num * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("我到终点了" +
Thread.currentThread().getName());
}
};
//定义分组
ThreadGroup group = new ThreadGroup("百米赛跑一组");
Thread t1 = new Thread(group,runnable,"张三");
Thread t2 = new Thread(group,runnable,"李四");
t1.start();
t2.start();
//打印线程分组详情
group.list();
//等待所有选手到达终点
while (group.activeCount() != 0){
}
//宣布成绩
System.out.println("宣布成绩");
}
}
Thread的几个属性
public class ThreadDemo13 {
public static void main(String[] args) {
Thread t1 = new Thread(() -> {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
},"张三");
System.out.println("线程状态:" + t1.getState());
t1.start();
System.out.println("线程状态II:" + t1.getState());
System.out.println("线程ID:" + t1.getId());
System.out.println("线程的名称:" +t1.getName());
System.out.println("线程的优先级:" +t1.getPriority());
System.out.println("线程是否为后台线程:" +t1.isDaemon());
System.out.println("线程是否存活:" +t1.isAlive());
System.out.println("线程是否被中断:" +t1.isInterrupted());
}
}