多线程的使用
一,继承Thread类
构造方法:
方法名
说明
Thread()
分配新的Thread对象。
Thread(String name)
分配新的Thread对象,将指定的name作为其线程名称。
常用方法:
方法名
说明
void start()
使该线程开始执行:Java虚拟机调用该线程的run方法。
void run()
该线程要执行的操作。
static void sleep(long millis)
在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)。
创建线程的步骤:
定义一个类继承Thread类。
重写run方法。
创建子类对象,就是创建线程对象。
调用start方法,开启线程并让线程执行,同时还会告诉jvm去调用run方法。
public class Demo {
public static void main(String[] args) {
//创建自定义线程对象
MyThread mt = new MyThread("新的线程!");
//开启新线程
mt.start();
//在主方法中执行for循环
for (int i = 0; i < 10; i++) {
System.out.println("main线程!" + i);
}
}
}
//线程类
class MyThread extends Thread {
//定义指定线程名称的构造方法
public MyThread(String name) {
//调用父类的String参数的构造方法,指定线程的名称
super(name);
}
/**
* 重写run方法,完成该线程执行的逻辑
*/
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(getName() + ":正在执行!" + i);
}
}
}
线程对象调用 run方法和调用start方法区别?线程对象调用run方法不开启线程。仅是对象调用方法。线程对象调用start开启线程,并让jvm调用run方法在开启的线程中执行。
获取线程名称
方法名
说明
Thread.currentThread()
获取当前线程对象
Thread.currentThread().getName();
获取当前线程对象的名称
二,实现Runnable接口
接口中的方法:
方法名
说明
void run()
使用实现接口Runnable的对象创建一个线程时,启动该线程将导致在独立执行中的线程调用对象的run方法。
创建线程的的步骤:
定义类实现Runnable接口。
覆盖接口中的Run方法。
创建Thread类的对象。
将Runnable接口的子类对象作为参数传递给Thread类的构造函数。
调用Thread类的start方法开启线程。
public class Demo {
public static void main(String[] args) {
//创建线程执行目标类对象
Runnable runn = new MyRunnable();
//将Runnable接口的子类对象作为参数传递给Thread类的构造函数
Thread thread = new Thread(runn);
Thread thread2 = new Thread(runn);
//开启线程
thread.start();
thread2.start();
for (int i = 0; i < 10; i++) {
System.out.println("main线程:正在执行!" + i);
}
}
}
//自定义线程执行任务类
class MyRunnable implements Runnable {
//定义线程要执行的run方法逻辑
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("我的线程:正在执行!" +