2.创建线程方式一_继承Thread类:创建线程有哪四种方式???如何通过继承Thread类来创建线程???Thread常用方法有哪四个???
学习:第7遍
1.、创建线程有哪四种方式???
方式一:继承Thread类
方式二:实现Runnable接口
方式三:实现Callable接口
方式四:使用Executors工具类创建线程池
2.如何通过继承Thread类来创建线程???
步骤:
(1). 定义一个类,继承自Thread类,重写run()方法
(2). 创建该类的实例,即创建一个线程
(3).调用start()方法,启动线程(不能直接调用run()方法)
3.Thread常用方法有哪四个???
方法一:thread1 .setName(“线程1”)
作用:给线程设置名字
方法二: thread1.start()
作用: 启动线程,并直接调用run()方法
方法三: Thread.currentThread()
作用:获取当前的线程对象
方法四: thread .getName()
作用:调用getName()获取线程名
/*
* JVM启动时会创建一个主线程,用来执行main方法
* 要想实现多线程,需要在主线程中创建新的线程
*
* 实际上,Java程序在运行时至少会启动两个线程:main线程、垃圾回收线程gc
*/
public class TestThread {
public static void main(String[] args) {
// 创建线程
MyThread thread1 = new MyThread(); //自定义线程的默认名称:Thread-编号,编号从0开始
/**
* 方法:thread1 .setName("线程1")
* 作用:给线程设置名字
*/
thread1 .setName("线程1");
/**
* 方法: thread1.start()
* 作用: 启动线程,并直接调用run()方法
*/
thread1.start(); // 线程并不一定立即执行,要获取到CPU时间片才会执行
MyThread thread2 = new MyThread("线程2");
thread2.start();
/**
* 方法: Thread.currentThread()
* 作用:获取当前的线程对象
*/
Thread thread = Thread.currentThread();
t.setName("主线程");
for (int i = 1; i <= 10000; i++) {
System.out.println(thread .getName()+"------------" + i); //主线程的默认名称就是main
}
}
}
class MyThread extends Thread {
public MyThread(){
}
public MyThread(String name){
super(name); //调用父类的构造方法,指定线程名
}
// 在run()方法中编写线程要执行的代码
@Override
public void run() {
for (int i = 1; i <= 10000; i++) {
System.out.println(getName()+"------------" + i); // 调用getName()获取线程名
}
}
}