Java多线程的知识点

article/2025/10/9 13:18:32

 

🌱🌱友友们大家好 我是你们的小王同学啊

今天给大家带来的是 java多线程的知识点

希望大家能支持小王 喜欢就给个三连吧

你们的三连是我制作的动力!💗💗

小王的gitee:小王同学🍰

小王的github:小王同学🍖

1.并发与并行🌭 

并发:

  •  指两个或多个事件在同一个时间段内发生。

并行:

  • 并行:指两个或多个事件在同一时刻发生(同时发生)。 

 2.线程与进程🌭

进程:🍔

  • 是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创建、运行到消亡的过程。

 

线程:🍔 

  • 线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。

 

线程的创建🌭 

构造方法:🍔

  • public Thread() :分配一个新的线程对象。
  • public Thread(String name) :分配一个指定名字的新的线程对象。
  • public Thread(Runnable target) :分配一个带有指定目标新的线程对象。
  • public Thread(Runnable target,String name) :分配一个带有指定目标新的线程对象并指定名字。

一些常见的方法:🍔

  • public String getName() :获取当前线程名称。
  • public void start() :导致此线程开始执行; Java虚拟机调用此线程的run方法。
  • public void run() :此线程要执行的任务在此处定义代码。
  • public static void sleep(long millis) :使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行)。
  • public static Thread currentThread() :返回对当前正在执行的线程对象的引用。

 

wait()方法🌭

  1. wait方法的作用就是使当前执行的代码进行等待,wait()方法就是Object类的方法,该方法是用来将当前线程置入"预执行队列中",并且在wait方法()所在的代码处停止执行,直到接到通知或被中断中止
  2. wait方法只能在同步方法中或同步块中调用。如果调用的wait时,没有持有适当的锁,会抛出异常。
  3. wait()方法执行后,当前线程释放锁,线程与其它线程竞争重新获取锁。
     

notify() 方法🌭

notify方法就是使停止的线程继续运行

  1. 方法notify()也要在同步方法或同步块中调用,该方法是用来通知那些可能等待该对象的对象锁的其它线程,对其发出通知notify,并使它们重新获取该对象的对象锁。如果有多个线程等待,则有线程规划器随机挑选出一个呈wait状态的的线程。
  2. notify()方法后,当前线程不会马上释放该对象锁,要等到执行notify()方法的线程将程序执行完,也就是退出同步代码块之后才会释放对象锁。

 查看线程的运行状态🌭

线程有六种状态分别是:新建、运行、阻塞、等待、计时等待和终止

实现思路:🌭

  • 创建一个类;ThreadState,实现Runnable接口
  • 定义三个方法:
    • .waitForASecond():使当前线程等待0.5秒或其他线程调用notify()或notifyAll()方法
       .waitForYears();使当前线程永久等待,直到其他线程调用notify()或notifyAll()方法.notifyNow():唤醒由调用wait方法()进入等待状态的线程

代码实现🌭 

package cn.xiaoxuzhu.daily;/*** @author  小王同学;* @version 1.0.0* Description:** 1.题目描述:* 题目:线程有6个状态:新建,运行,阻塞,等待,计时,等待和终止* new新进程时,线程处于新建状态。* 调用start()方法,线程处于运行状态* 对于一些含有时间参数的方法如Thread类的sleep方法();可以使线程处于计时等待状态* 当run()方法运行完毕或出现异常时,线程处于终止状态。* 实现:查看线程的运行状态。** 2.解题思路:* 创建一个类;ThreadState,实现Runnable接口** 定义三个方法* .waitForASecond():使当前线程等待0.5秒或其他线程调用notify()或notifyAll()方法* .waitForYears();使当前线程永久等待,直到其他线程调用notify()或notifyAll()方法* .notifyNow():唤醒由调用wait方法()进入等待状态的线程** 使用Thread类的getState()方法,可以获得线程的状态* 该方法的返回值是Thread.state**/public class ThreadState implements Runnable{public  synchronized  void waitForASecond()throws InterruptedException{wait(500); //使当前线程等待0.5秒或其他线程调用notify()或者notifyAll()方法}public  synchronized void waitForYears()throws  InterruptedException{wait();  //使当前线程永久等待,直到其他线程调用notify()或notifyAll()方法}public  synchronized void  notifyNow()throws  InterruptedException{notify(); //唤醒由调用wait方法()进入等待状态的线程Thread.sleep(100); //留时间打印}@Overridepublic void run() {try {waitForASecond(); //在新线程中运行waitForASecond();方法waitForYears();   //在新线程中运行waitForYears()方法}catch (InterruptedException e){e.printStackTrace();}}
}
package cn.xiaoxuzhu.daily;public class _67 {public static void main(String[] args) throws InterruptedException {ThreadState state=new ThreadState(); //创建state对象Thread thread=new Thread(state); //利用state对象创建Thread对象System.out.println("新建线程:"+thread.getState()); //输出线程状态thread.start(); //调用thread对象的start()方法,启动新线程System.out.println("启动线程:"+thread.getState()); //输出线程状态Thread.sleep(100);//当前线程休眠0.1秒,使新线程运行waitForASecond()方法System.out.println("计时等待:"+thread.getState()); //输出线程状态Thread.sleep(1000);//当前线程休眠1秒,使新线程运行waitForYears()方法System.out.println("等待线程:"+thread.getState());//输出线程状态state.notifyNow();//调用state的notifyNow()方法System.out.println("唤醒线程:"+thread.getState());//输出线程状态Thread.sleep(1000);;//当前新线程休眠1秒,使新线程结束System.out.println("终止线程:"+thread.getState()); //输出进程状态

 

   

以上就是 小王同学带给大家的多线程基础知识

觉得小王写的不错的话麻烦三连奉上

谢谢你们这么好看还关注我!💦💦

  


http://chatgpt.dhexx.cn/article/roA6h4wl.shtml

相关文章

java线程调度

线程调度分为两种形式 1 分时调度模型: 所有线程轮流获得CPU使用权,平均分配每一个线程的CPU时间片 2 抢占式调度模型: 优先让优先级更高的线程使用CPU,如果线程优先级相同 那机会随机分配优先级 给优先级高的线程更多一些的时间片 而java的分配模式 是…

java多线程(详)

目录 一,什么叫线程? 那我们要先了解什么叫进程,线程依赖于进程而存在的。 二.多线程的创建 方式一:继承Thread类 方式二:实现Runnable接口 方式三:JDK 5.0新增:实现Callable接口 三种方式的比…

Java线程、Java多线程详细介绍

目录 一、进程和线程的区别 1.1 进程 1.2 线程 二、并发和并行 2.1 并行 2.2 并发 2.3 监控线程的执行情况 三、创建方式 3.1 继承Thread类 思考:为什么不直接通过对象调用start()方法? 3.2 实现Runnable接口 …

【java】java多线程及线程池详解

目录 前言线程是什么?多线程是什么?多线程的作用和好处以及缺点守护线程和用户线程并发和并行的区别 一.线程的状态和常用方法1.线程各种状态转化图2.线程相关常用方法有① wait()② sleep(long timeout)③ join()④ yield()⑤ notify()和notifyAll() 3.…

Java线程池(超详细)

文章目录 1. 线程池概念2. JUC线程池架构3. Executors创建线程的4种方法4. 线程池的标准创建方式5. 向线程池提交任务的两种方式6. 线程池的任务调度流程7. ThreadFactory(线程工厂)8. 任务阻塞队列9. 调度器的钩子方法10. 线程池的拒绝策略11. 线程池的…

Java多线程超详解

引言 随着计算机的配置越来越高,我们需要将进程进一步优化,细分为线程,充分提高图形化界面的多线程的开发。这就要求对线程的掌握很彻底。 那么话不多说,今天本帅将记录自己线程的学习。 程序,进程,线程的…

java多线程(超详细)

1 - 线程 1.1 - 进程 进程就是正在运行中的程序(进程是驻留在内存中的) 是系统执行资源分配和调度的独立单位 每一进程都有属于自己的存储空间和系统资源 注意:进程A和进程B的内存独立不共享。 1.2 - 线程 线程就是进程中的单个顺序控制…

JAVA线程

一、线程相关概念 (一)程序、进程和线程的区别 程序 程序是含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中,也就是说程序是静态的代码。 进程 进程是程序的一次执行过程,是系统运行的基本单位&#xf…

Java 线程 基础知识总结

线程基础 很不严谨的说,线程是什么?线程就是为了让很多个东西并发执行,大大的提高程序执行的效率啊 三个非常重要的概念: 程序:一组写好了的静态代码块(就我们写的那些代码玩意)进程&#xf…

Java多线程(超详解)

目录 1. 线程简介 1.1 程序 1.2 进程 1.3 线程 1.4 多线程 1.5 普通方法调用和多线程 2. 线程创建 2.1 继承Thread类 2.2 实现Runnable接口 2.3 实现Callable接口(了解) 2.4 网图下载 2.4.1 通过继承Thread类实现网图下载 2.4.2 通…

java 线程详解

一、线程的基本概念 一个程序最少需要一个进程,而一个进程最少需要一个线程。关系是线程–>进程–>程序的大致组成结构。所以线程是程序执行流的最小单位,而进程是系统进行资源分配和调度的一个独立单位。 一个线程就是在进程中的一个单一的顺序…

JAVA多线程详解(超详细)

目录 一、线程简介1、进程、线程2、并发、并行、串行3、进程的三态 二、线程实现1、继承Thread类2、实现Runnable接口3、实现Callable接口(不常用) 三、线程常用方法1、线程的状态2、线程常用方法 四、多线程1、守护(Deamon)线程2…

Java多线程(超详细!)

1、什么是进程?什么是线程? 进程是:一个应用程序(1个进程是一个软件)。 线程是:一个进程中的执行场景/执行单元。 注意:一个进程可以启动多个线程。 eg. 对于java程序来说,当在DOS命令窗口中…

count/count if函数的基本用法

count函数,用来计算单元格的数的个数,只是用来计数,并且只有只记录数子的个数,文本的个数是不被记录的。 但是很少会用到单纯的count函数,往往在工作中计数是带有条件的。就会用到countif函数 COUNTIF函数需要注意的点…

EXCEL COUNTIF()的一些奇特的用法

文章目录 前言一、统计第几次重复二、统计不重复的数量三、通配符模糊统计四、防止重复录入五、忽略错误值或空值统计六、重复值填充背景色总结 前言 日常工作中需要度娘很多知识点或者方法,但每次用了就忘,下次遇到就需要继续度娘,故在此记…

Excel多条件计数——COUNTIFS【获奖情况统计】

问题描述 当前,我们需要对表格中的获奖情况进行统计 奖励级别:院级、校级、国家级、国际级奖励内容:特等奖、一等奖、二等奖、三等奖、优胜奖 功能要求 对所有奖励级别进行统计根据级别,计算内容数量 当有人的选项内容如下时 …

如何在Microsoft Excel中使用COUNTIF函数

COUNTIF 是一个 Excel 函数,用于对满足单个条件的区域中的单元格进行计数。COUNTIF可用于计算包含日期、数字和文本的单元格。COUNTIF 中使用的条件支持逻辑运算符(>、<、<>、=)和通配符(*、?)进行部分匹配。 例如,我们想计算包含 Google或 Facebook 的单元…

COUNT函数的使用

一、问题描述 今天在随手练习sql的时候&#xff0c;发现count查出来的数量和实际的数量不对&#xff0c;下面是我查询的sql 我想看看suitName字段一共有多少种数据 SELECTCOUNT(DISTINCT suitName) AS suitNameNum FROMrace_goods 得到的结果是suitName条数是22条&#xff0c…

countif是什么意思,如何运用?

countif是什么意思&#xff1f;countif函数是excel中对指定区域中符合指定条件的单元格计数的一个函数&#xff0c;简单来说就是算出某个参数的数量。那么&#xff0c;countif函数具体是如何运用的呢&#xff1f;小编分为两种情景为大家总结了操作步骤。 情景一&#xff1a;计算…

excel通过sumproduct和countifs不重复计数(数据中包含空白单元)

1. 常规情况&#xff0c;数据中不包含空白单元格&#xff0c;如下图&#xff1a; SUMPRODUCT((A2:A24E2)*(B2:B24F2)*(1/COUNTIFS(A2:A24,A2:A24,B2:B24,B2:B24,C2:C24,C2:C24))) 2. 数据中包含空白单元格&#xff0c;如下图&#xff1a; 数据中包含空白单元的情况&#xff0c…