多线程java_Java多线程基础之Thread类详解

本文介绍了Java中的线程概念,指出线程是进程内的轻量级执行单元,比进程更高效。接着讲解了如何在Java中创建多线程,包括继承Thread类和实现Runnable接口两种方式,并推荐使用后者。此外,文章还讨论了Java线程的六种状态及其转换,并提供了一份Thread类的源码注释,帮助初学者理解线程的内部工作原理。最后,作者建议读者通过实际操作和阅读源码来深入学习Java多线程。
摘要由CSDN通过智能技术生成

一、线程

我们都知道,进程是系统运行程序的基本单位,打开电脑的任务管理器,就可以看到一个个运行中的进程。但是仔细观察可以发现每个进程之下,还有更多的线程。 线程是比进程更小、更轻量级的执行单位,每个进程都拥有自己的一块内存空间和变量资源等,然而同一个进程下的多个线程则共享数据和资源,所以不管线程的创建和销毁工作,还是在线程之间切换工作,都要比进程更加轻量级、消耗系统资源更少。

二、Java多线程编程

在没有接触多线程之前,我们编写的程序都只有一个作为程序入口的main函数,其实这正是一个线程Main,当然这是单线程下的编程。

1、创建多线程

初学Java多线程编程的时候,需要掌握两种创建多线程的方法:

  • 声明一个Thread类的子类,子类中重写Thread类的run方法。
  • 声明一个实现Runnable接口的类,类中实现run方法。

更推荐使用第二种方式创建多线程,Thread类本身也实现了Runnable接口。

public 

2、线程状态

Java中线程可以有如下6中状态:

  • NEW 新创建
  • RUNNABLE 可运行
  • BLOCKED 阻塞
  • WAITING 等待
  • TIMED WAITING 计时等待
  • TERMINATED 终止

线程之间的状态转换如下图(图源于《Java并发编程艺术》):

1a15b2c8e7c257b738d78138bc566bb9.png

三、Thread类详解

Thread类是java.lang包下的类,是多线程经常需要使用的类。因为笔者之前看过一些关于多线程的书和资料,包括《Java核心技术》的并发一章和其他文章等,但是始终无法理解其中原理,总是容易遗忘。索性这次结合着源码进行学习,笔者通过阅读Thread类的源码(笔者阅读的是JDK8的源码),并对常用的方法作出了自己的注释,确实学习效果要比之前只看资料来得扎实。 其中,笔者对一些初学者容易产生疑惑的地方都作出了注释,比如join方法的使用,线程中断等。

笔者建议大家可以将下面的代码复制进自己的一个单独的类文件,然后对比笔者的注释(这里可以通过Ctrl+f进行搜索,快速定位),结合自己阅读源码,去开始探索多线程领域。

/*
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值