并发编程学习(1)线程的创建、启动、停止

本文介绍了单核CPU执行程序的流程,强调了线程在多核CPU中的并行执行优势。详细讲解了Java线程的创建方式,包括Runnable、Thread和Callable接口的使用。探讨了线程的生命周期及其6种状态,并分析了线程的启动原理,即通过JVM调用操作系统启动。此外,还讨论了线程的终止,包括isInterrupted方法和InterruptedException异常的处理。
摘要由CSDN通过智能技术生成

单核cpu执行程序的流程

有了进程以后,可以让操作系统从宏观层面实现多应用并发。而并发的实现是通过 CPU 时间片不端切换执行的。对于单核 CPU 来说,在任意一个时刻只会有一个进程在被CPU 调度

线程的出现
  1. 在多核 CPU 中,利用多线程可以实现真正意义上的并行执行
  2. 在一个应用进程中,会存在多个同时执行的任务,如果其中一个任务被阻塞,将会引起不依赖该任务的任务也
    被阻塞。通过对不同任务创建不同的线程去处理,可以提升程序处理的实时性
  3. 线程可以认为是轻量级的进程,所以线程的创建、销毁比进程更快

线程的创建

  1. Runnable 接口
  2. Thread类(本质上是Runnable 的实现)
  3. 实现 Callable 接口通过 FutureTask 包装器来创建 Thread 线程
  4. ThreadPool
    具体说明后面文章会单独学习

Java线程的生命周期

Java 线程既然能够创建,那么也势必会被销毁,所以线程是存在生命周期的,那么我们接下来从线程的生命周期开始去了解线程。Thread类里面有个state枚举展示了所有生命周期的状态
线程一共有 6 种状态(NEW、RUNNABLE、BLOCKED、WAITING、TIME_WAITING、TERMINATED)

在这里插入图片描述

  • NEW:初始状态,线程被构建,但是还没有调用 start 方法
  • RUNNABLED:运行状态,JAVA 线程把操作系统中的就绪和运行两种状态统一称为“运行中”
  • BLOCKED:阻塞状态,表示线程进入等待状态,也就是线程因为某种原因放弃了 CPU 使用权,阻塞也分为几种情况
    • 等待阻塞:运行的线程执行 wait 方法,jvm 会把当前线程放入到等待队列
    • 同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被其他线程锁占用了,那么 jvm 会把当前的线程放入到锁池中
    • 其他阻塞:运行的线程执行 Thread.sleep 或者 t.join 方法,或者发出了 I/O 请求时,JVM 会把当前线程设置为阻塞状态,当 sleep 结束、join 线程终止、io 处理完毕则线程恢复
  • WAITING: 无限期等待另一个线程执行特定操作的线程处于此状态
  • TIME_WAITING:超时等待状态,超时以后自动返回
  • TERMINATED:终止状态,表示当前线程执行完毕

public class ThreadStatsDemo {
   
    public static void main(String[] args) {
   
        new Thread(()->{
   
            while (true){
   
                try {
   
                    TimeUnit.SECONDS.sleep(100);
                } catch (InterruptedException e) {
   
                    e.printStackTrace();
                }
            }
        },"Time_Waiting_Thread").start();


        new Thread(()->{
   
            while (true){
   
                synchronized (ThreadStatsDemo.class){
   
                    try {
   
                        ThreadStatsDemo
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值