线程基本概念及创建方式

在之前的博客中,我们已经对进程有了一定的了解,在本文中,我们将对与进程有密不可分关系的线程进行介绍.

1. 什么是线程

所谓线程,就是一个"执行流",每个线程之间都可以按照各自的代码进行执行,可以允许多个线程在同一时间各自执行自己的代码.

举个例子来说,如果一个班级需要进行大扫除,每个同学被分派到的任务不同,在同一段时间内,每个同学自己做自己被分派到的任务,这就形成了多线程,而大扫除就是一个进程.

2. 认识Thread类

Thread类是JVM用来管理线程的一个类,换句话说,每个线程都有一个唯一的Thread对象与之关

联.Thread类的对象就是用来描述一个线程执行流的,JVM会将这些Thread对象组织起来,用于线程调度,线程管理.

Thread对象的创建

下面给出四种不同参数类型的构造:

java 复制代码
Thread t1 = new Thread();
Thread t2 = new Thread(new MyRunnable());
Thread t3 = new Thread("I am a thread");
Thread t4 = new Thread(new MyRunnable(), "I am a thread");

其中字符串参数用来给Thread对象命名.

Thread中几个常见的属性和方法

3. 线程的创建

总体而言,线程有5种创建方式:

3.1 继承Thread类,重写run

java 复制代码
class MyThread extends Thread {
    @Override
    public void run() {

    }
}
public class Demo1 {
    public static void main(String[] args) {
        Thread t = new MyThread();
    }
}

3.2 实现Runnable,重写run

java 复制代码
class MyThread2 implements Runnable {
    @Override
    public void run() {
        
    }
}
public class Demo2 {
    public static void main(String[] args) {
        Thread t = new MyThread();
    }
}

3.3 继承Thread,重写run,使用匿名内部类

java 复制代码
public class Demo3 {
    public static void main(String[] args) {
        Thread t = new Thread() {
            @Override
            public void run() {
                
            }
        }
    }
}

3.4 实现Runnable,重写run,使用匿名内部类

java 复制代码
public class Demo4 {
    public static void main(String[] args) {
        Thread t = new Thread(new Runnable() {
            @Override
            public void run() {
                
            }
        });
        
    }
}

3.5 使用lambda表达式

java 复制代码
public class Demo5 {
    public static void main(String[] args) {
        Thread t = new Thread(()->{
            
        });
        
    }
}
相关推荐
兮山与4 天前
JavaEE初阶11.0
javaee
爱学习的小可爱卢7 天前
JavaEE进阶——SpringAOP从入门到源码全解析
javaee·spring-aop
sugar__salt13 天前
网络编程套接字(二)——TCP
java·网络·网络协议·tcp/ip·java-ee·javaee
努力小周14 天前
基于STM32的智能台灯系统设计与实现
stm32·单片机·嵌入式硬件·c#·毕业设计·毕设·javaee
兮山与18 天前
JavaEE初阶10.0
javaee
兮山与18 天前
JavaEE初阶8.0
javaee
兮山与18 天前
JavaEE初阶9.0
javaee
爱学习的小可爱卢20 天前
JavaEE进阶——SpringMVC响应处理详解
spring boot·postman·javaee
带刺的坐椅23 天前
Solon 不依赖 Java EE 是其最有价值的设计!
java·spring·web·solon·javaee
想不明白的过度思考者1 个月前
基于 Spring Boot 的 Web 三大核心交互案例精讲
前端·spring boot·后端·交互·javaee