一、线程的常用构造方法
1.直接创建线程并设置线程的名称
Thread thread=new Thread(String name);
package thread.threaddemo;
/**
* @Author: wenjingyuan
* @Date: 2022/11/02/18:51
* @Description:直接命名线程名称的方式
*/
public class ThraedDemo10 {
public static void main(String[] args) {
Thread thread=new Thread("线程1"){
@Override
public void run() {
try {
Thread.sleep(60*60*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
thread.start();
}
}
通过jconsole工具也能观察到我创建的线程:如果找到jconsole工具可以观察我之前的博客;
2.通过runnable创建线程和设置线程名
Thread thread=new Thread(Runnable target,String name);
package thread.threaddemo;
/**
* @Author: wenjingyuan
* @Date: 2022/11/02/19:09
* @Description:用Runnable创建线程并设置线程名称
*/
public class ThreadDemo11 {
public static void main(String[] args) {
Thread thread=new Thread(new Runnable() {
@Override
public void run() {
//休眠
try {
Thread.sleep(60*60*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
},"Runnable-Thread");
thread.start();
}
}
通过jconsole工具进行查看:
3.给线程创建分组和任务
Thread thread=Thread(ThreadGroup group, Runnable target);
package thread.threaddemo;
import java.util.Random;
/**
* @Author: wenjingyuan
* @Date: 2022/11/02/19:59
* @Description:
*/
public class ThreadDemo12 {
public static void main(String[] args) {
//首先我们先得创一个分组
ThreadGroup group=new ThreadGroup("group-Thread");
//其次我们可以给分组里边的线程创建一个任务
Runnable runTask=new Runnable() {
@Override
public void run() {
//业务代码
//首先我们先创建一个随机数
//0-2+1等于1-3
int random=new Random().nextInt(3)+1;
try {
Thread.sleep(random*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"选手到达终点"+random+"s");
}
};
//其次我们可以在组内创建线程
Thread t1=new Thread(group,runTask);
Thread t2=new Thread(group,runTask);
Thread t3=new Thread(group,runTask);
//之后我们应该就是启动线程
t1.start();
t2.start();
t3.start();
//等到组内线程全部执行结束任务之后我们打印宣布比赛结果
while(group.activeCount()>0){
}
System.out.println("宣布比赛结果!");
}
}
执行结果为:
4.继承Thread来创建线程
Thread thread=new Thread();
无参数构造方法;
5.通过Runnable接口创建线程
Thread thread=new Thread(Runnable target);