多线程基本概念、生命周期、中断机制等小结

本文详细介绍了Java中的多线程,包括进程与线程的关系,多线程的创建,线程执行顺序,线程的生命周期,中断线程的两种方法以及守护线程的概念。通过实例讲解了线程同步、中断标志的检查以及如何避免数据不一致问题。了解这些基础知识对理解Java多线程编程至关重要。
摘要由CSDN通过智能技术生成

进程和线程

在计算机中,程序的一次执行或者执行一个任务称为一个进程。好比浏览器就是一个进程,视频播放器是另一个进程

某些进程内部还需要同时执行多个子任务。例如,在看视频一遍看着视频一遍发弹幕,查询分集介绍,我们把子任务称为线程

进程和线程的关系就是:一个进程可以包含一个或多个线程,但至少会有一个线程

操作系统调度的最小任务单位其实不是进程,而是线程。常用的Windows、Linux等操作系统都采用抢占式多任务,如何调度线程完全由操作系统决定,程序自己不能决定什么时候执行,以及执行多长时间

因为同一个应用程序,既可以有多个进程,也可以有多个线程,因此,实现多任务(多进程)的方法,有以下几种:

  • 多线程模式(一个进程有多个线程)
  • 多进程+多线程模式

具体多任务的实现应该如何选择?
结合进程和线程的特点。和多线程比,多进程缺点在于:

  • 创建进程比创建线程开销大
  • 进程间通信很慢,而线程间通信就是读写同一个变量速度快,进程间的隔离也导致他们想共享数据是很麻烦的
    多进程优点在于:
  • 多进程稳定性比多线程高,因为在多进程的情况下,一个进程崩溃不会影响其他进程,而在多线程的情况下,任何一个线程崩溃会直接导致整个进程崩溃

多线程

Java 语言内置了多线程支持:一个 Java 程序实际上是一个 JVM 进程,JVM 进程用一个主线程来执行 main() 方法,在 main() 方法内部,又可以启动多个线程。此外,JVM 还负责垃圾回收的其他工作线程。

对于大多数Java程序来说,我们说多任务,实际上是说如何使用多线程实现多任务。

和单线程相比:

  • 多线程编程的特点在于:多线程经常需要读写共享数据,并且需要同步。例如,播放电影时,就必须由一个线程播放视频,另一个线程播放音频,两个线程需要协调运行,否则画面和声音就不同步。因此,多线程编程的复杂度高,调试更困难。
  • 多线程的优点:相比单线程只能干一件事,无法并行,直接导致用户体验不好。CPU 快速运算能力、多核这些都被浪费了,多线程却可以利用好
创建线程

前面说了,当Java程序启动的时候,实际上是启动了一个JVM进程,然后,JVM启动主线程来执行main()方法。在main()方法中,我们又可以启动其他线程。

要创建一个新线程往往需要两步

  • 实例化一个Thread实例
  • 然后调用它的start()方法

方式一:从Thread派生一个自定义类,然后覆写run()方法
start()方法会在内部自动调用实例的run()方法

public class Main {
   
    public static void main(String[] args) {
   
        Thread t = new MyThread();
        t.start(); // 启动新线程
    }
}

class MyThread extends Thread {
   
    @Override
    public void run() {
   
        System.out.println("start new thread!");
    }
}

方法二:创建Thread实例时,传入一个Runnable实例

public class Main {
   
    public static void main(String[] args) {
   
        Thread t = new Thread(new MyRunnable())
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值