认识线程、Thead类及其常见方法,线程的状态

本文详细介绍了线程的概念、存在的原因,以及进程与线程的区别。在Java中,线程可以通过继承Thread类或实现Runnable接口创建。讨论了Thread类的构造方法、属性、start方法、中断和等待线程的方法。此外,还阐述了线程的六种状态,包括NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING和TERMINATED。
摘要由CSDN通过智能技术生成

一、认识线程

1.线程是什么

一个线程就是一个 "执行流". 每个线程之间都可以按照顺讯执行自己的代码. 多个线程之间 "同时" 执行 着多份代码

2.线程存在的原因

首先, "并发编程" 成为 "刚需"。 (单核 CPU 的发展遇到了瓶颈. 要想提高算力, 就需要多核 CPU. 而并发编程能更充分利用多核 CPU 资源. 有些任务场景需要 "等待 IO", 为了让等待 IO 的时间能够去做一些其他的工作, 也需要用到并发编程)

其次, 虽然多进程也能实现并发编程, 但是,线程比进程更轻量;创建线程比创建进程更快;销毁线程比销毁进程更快;调度线程比调度进程更快。

3.进程与线程的区别:

(1)进程是操作系统资源分配的最小单位,线程是操作系统调度的最小单位。线程是进程的执行单位

(2)一个进程至少会有一个线程。

(3)进程的资源是互相隔离的,同属于一个进程的不同线程,是共享资源的(也正是因为资源共享,给我们带来了很大的麻烦)。

4.Java线程 和 操作系统线程 的关系

线程是操作系统中的概念. 操作系统内核实现了线程这样的机制, 并且对用户层提供了一些 API 供用户使用.。Java 标准库中 Thread 类可以视为是对操作系统提供的 API 进行了进一步的抽象和封装.

5.创建线程的方式

(1)通过继承Thread类,重写run方法,创建线程

线程是操作系统的概念,操作系统内核提供了对线程的操作,并且提供了相应的api,Java对这些api进行了封装,就是Thread类。(继承:子类去继承父类的一些行为及特征,可以去重写父类的方法,重写父类的方法时,定义和参数要和父类保持一样,重载是方法名相同但参数不同)

class MyThread3 extends Thread{  //继承Thread类
    @Override
    public void run() {    //重写run方法
        while (true){
            System.out.println("hello thread");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
//创建MyThread类的实例,调用start方法启动线程
public class Demo2 {
    public static void main(String[] args) {
        Thread thread = new MyThread3();  //创建新线程
        thread.start();  //启动线程
    }
}

(2)通过实现Runnable接口,重写run方法(run方法是描述了该线程具体需要做的事情),创建线程

class MyRunnable implements Runnable{    //通过实现Runnable接口 创建线程
    @Override
    public void run() {
        System.out.println("my runnable");
    }
}
public class Demo3 {
    public static void main(String[] args) {
        MyRunnable runnable = new MyRunnable(); //创建Runnable的子类
        Thread thread = new Thread(runnable);  //实现该子类的实例,并交给一个线程的实例
        thread.start();  //启动该线程
    }
}

(3)匿名内部类的方式,创建Thread的子类,创建线程

public class Demo4 {
    public static void main(String[] args) {
        Thread thread = new Thread(){
            @Override
            public void run() {
                System.out.println(4444);
            }
        };

        thread.start();
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值