目录

一、前言

二、定义

1.进程 :

2.线程 :

3.单线程与多线程 :

4.并发与并行 :

三、线程的创建

1.创建线程的两种基本方式 :

1° 继承Thread类,并重写run方法

1.5° 多线程的执行机制(重要)

2° 实现Runnable接口,并重写run方法

2. 两种创建线程方式的比较 :

四、线程的方法

1. setName(String name) 和 getName() :

2.start() 和 run() :

3.setPriority(int newPriority) 和 getPriority() :

4.sleep(long millis) 和 interrupt() :

5.Δ代码演示 :

五、线程的操作

1.线程退出 :

2. 线程插队 :

3.线程守护 :

六、 线程的状态

1.线程的7种状态:

2.线程的生命周期图:(重要)

七、线程同步机制

1.概述 :

2.使用 :

1° 同步代码块

2° 同步方法

3.案例 :

八、关于“锁”

1.互斥锁

2.死锁 :

3.释放锁 :

九、完结撒❀


一、前言

大家好,本篇博文将会和大家分享关于“多线程”内容的基础部分。“多线程和高并发”作为java学习中一块非常难啃的骨头,本身难度很大,但是依然无法阻止我们向着“牛逼java人”迈进;up将来会在《java高级》专栏与大家分享“多线程和高并发”的相关内容。本篇博文主要面向基础阶段,但是,虽说是基础,该说的我们还是不会含糊。

注意:①代码中的注释也很重要;不要眼高手低,行之明觉精察处即是知,自己动手跟着过一遍才算有收获;点击文章前面的目录或者侧边栏目录可以进行跳转。良工不示人以朴,所有文章都会适时改进。感谢阅读!


二、定义

1.进程 :

进程是指程序的一次执行过程,或者说是正在运行的一个程序当我们启动了某个应用程序时,就启动了一个进程,操作系统就会为该进程分配内存空间。进程是一个动态过程,自身有产生,存在和消亡的过程。
                比方说,up现在打开了百度网盘,那么,当前百度网盘就是一个进程,我们可以在任务管理器的“进程”栏中看到它。如下图所示 :

2.线程 :

线程是由进程创建的,是进程的一个实体。一个进程可以拥有多个线程
                比方说,启动百度网盘后,就启动了一个进程,而在百度网盘中我们可以同时启动多个下载任务,这些下载任务就是百度网盘这个进程所创建的线程。如下图所示 : 

3.单线程与多线程 :

单线程——同一时刻,只允许执行一个线程
                多线程——同一时刻,可以执行多个线程。eg : 百度网盘可以同时下载多个任务;谷歌浏览器可以同时打开多个页面;qq可以同时打开多个聊天窗口,等等。

4.并发与并行 :

并发——同一时间间隔内,多个任务在宏观上同时执行;单核CPU实现的多任务处理就是并发。实际上,单核CPU在同一时刻只能处理一道程序(一个任务),因此微观上单核CPU的多任务处理是通过“分时交替”来实现的;即,将某一时间间隔分成许多的时间片,然后在不同的时间片不停地切换正在处理的任务,宏观上给人的感觉就是“同时执行”了。

 并行——同一时刻可以完成两种或两种以上的任务的处理;并行需要相关硬件的支持,多核CPU可以实现并行。(一般来说,多核CPU的处理是并发和并行同时存在的)。


三、线程的创建

1.创建线程的两种基本方式 :

1° 继承Thread类,并重写run方法

我们先来看一下Thread是什么意思,如下图所示 :

在java中,Thread表示线程,来看一下Thread类的类图,如下 :

可以看到,Thread类其实是实现了Runnable接口,所以才有了两种创建线程的方式。
                对于第一种创建线程的方式,up以Thread_Demo1类为测试类,在源文件中定义Grape类去继承Thread类并重写run方法代码如下 : (注意看注释)

package csdn.knowledge.thread;/*** @author : Cyan_RA9* @version : 21.0*/
public class Thread_Demo1 {public static void main(String[] args) {//创建线程对象Grape grape = new Grape();//启动线程!grape.start();/*通过start方法启动线程,默认会调用线程类中的run方法。*/}
}class Grape extends Thread {    /**当某个类继承了Thread类后,就可以当作线程使用*/private int times = 0;      //定义times变量,用于统计run方法被执行的次数。/*一般要重写run方法(本质是实现了Runnable接口中的抽象方法),以实现自己的业务需求。*/@Overridepublic void run() {while (true) {System.out.println("我被吃第" + ++times + "次了												

java 多线程基础 万字详解(通俗易懂)相关推荐

  1. java 反射基础 万字详解(Class-Constructor-Method-Field一条龙)

    目录 前言 一.反射及其相关概念 1.什么是反射? 2.反射的用途: ①分析类: ②查看并使用对象: 3.反射的应用场景: 4.类加载器: 类的加载时机: 5.Class对象: 联系: 二.获取Cla ...

  2. JAVA 多线程并发超详解

    JAVA 多线程并发超详解(未完,下一篇文章还有) 1. JAVA 多线程并发 1.1.1. JAVA 并发知识库 1.1.2. JAVA 线程实现/创建方式 1.1.2.1. 继承 Thread 类 ...

  3. java IO流基础 万字详解(从拷贝文件到模拟上传头像)

    目录 一.前言: 二.IO流简介: 1.什么是IO流? 2.IO流能干什么? 3.IO流的分类: 4.IO流体系: 三.字符流读写文件: 1.普通字符流读取文件: 前言: ①以单个字符读取: 代码演示 ...

  4. Java——多线程之方法详解

    Java多线程系列文章是Java多线程的详解介绍,对多线程还不熟悉的同学可以先去看一下我的这篇博客Java基础系列3:多线程超详细总结,这篇博客从宏观层面介绍了多线程的整体概况,接下来的几篇文章是对多 ...

  5. java static关键字 万字详解

    目录 一.为什么需要static关键字: 二.static关键字概述 : 1.作用 : 2.使用 : 三.static修饰成员变量详解 : 1.特点 : 2.细节 : ①什么时候考虑使用static关 ...

  6. java 多线程同步_详解Java多线程编程中的线程同步方法

    1.多线程的同步: 1.1.同步机制:在多线程中,可能有多个线程试图访问一个有限的资源,必须预防这种情况的发生.所以引入了同步机制:在线程使用一个资源时为其加锁,这样其他的线程便不能访问那个资源了,直 ...

  7. Android多线程基础知识详解(傻瓜教程)

    线程的基本用法 Android中的多线程和Java中的多线程语法基本相同.定义一个新的线程首先需要新建一个类继承自Thread,然后重写父类方法run(),在run()方法中编写耗时逻辑即可.一般情况 ...

  8. Java多线程(超详解)

    目录 1. 线程简介 1.1 程序 1.2 进程 1.3 线程 1.4 多线程 1.5 普通方法调用和多线程 2. 线程创建 2.1 继承Thread类 2.2 实现Runnable接口 2.3 实现 ...

  9. Java SE基础知识详解第[18]期—网络编程(通信)

    写在前面: 每一个不曾起舞的日子,都是对生命的辜负. 希望看到这里的每一个人都能努力学习,不负韶华,成就更好的自己. 以下仅是个人学习过程中的一些想法与感悟,Java知识博大精深,作为初学者,个人能力 ...

最新文章

  1. 无法定位软件包_使用Degraph管理软件包依赖关系
  2. MicroPython支持图形化编辑了:Python Editor带你轻松玩转MicroPython
  3. 小程序 富文本自适应屏幕_自适应文本:跨屏幕尺寸构建可读文本
  4. java外部类_Java里什么叫内部类什么叫外部类
  5. 使用vim的重不重要_VIM高级操作,经常用vim的应该多学习。多开发效率很有大帮助!...
  6. swift面向对象之属性
  7. ui li 菜单 点击添加下级_如何制作导航栏中的下拉菜单
  8. Python3.2官方文档翻译--标准库概览(一)
  9. TOYOTA MOTOR CORPORATION Programming Contest 2022(AtCoder Beginner Contest 270) AB题解
  10. python 自动打包pyd
  11. python数字转中文大写_python 数字转换为大写
  12. 杭州大江东科目三路线经验分享
  13. 身为一名合格root管理员的基本防范措施 Linux系统安全及应用
  14. SoapUI导出响应文件
  15. 怎样把d盘改成c盘!如何把收藏夹和桌面的路径设成D盘
  16. 标号法(Dijkstra)求最短路 matlab
  17. python清华源 断流_V2Ray断流异常
  18. 课时31:永久储存:腌制一缸美味的泡菜
  19. outlook答复_如何在Windows版Outlook中设置外出答复
  20. 猪猪大PK V0.3

热门文章

  1. http的15种请求方法
  2. Ajax同步请求/异步请求(get|post)
  3. VUE ajax解决同步请求问题
  4. seccomp sandbox简介
  5. word2013~2016多级标题自动编号
  6. 用RC522与arduino做一个简单的门禁系统
  7. 虎牙直播地址解析工具(修复版)[已失效]
  8. 我的3轴4轴并联机器人
  9. optee介绍(一)代码下载编译以及使用qemu运行
  10. android开发用c语言,AndroidC语言开发系列.doc