随笔分类 -  多线程

摘要:本次代码摘自某公众号造成OOM代码模拟 public static void test() throws InterruptedException, ExecutionException { Executor executor = Executors.newFixedThreadPool(3); C 阅读全文
posted @ 2022-07-03 19:47 小陈子博客 阅读(85) 评论(0) 推荐(0) 编辑
摘要:可重入锁与不可重入锁 引言 本节介绍的是可重入锁和不可重入锁。可指的是可以,不可指的是不可以。重入指的是重复进入同步作用域。这里的同步作用域可以是同步代码块,也可以是同步方法或者是lock锁同步代码,无论是进入哪一个同步作用域,都意味着同步锁被重复使用。所以重入也有重复使用同步锁的意思。锁指的是同步 阅读全文
posted @ 2022-05-03 23:01 小陈子博客 阅读(659) 评论(0) 推荐(0) 编辑
摘要:Lock锁的等待唤醒机制(Condition) lock锁的等待唤醒机制和synchronize的等待唤醒机制稍微有点不同,lock锁的等待唤醒机制主要是靠condition实现的,condition是通过lock锁的new condition方法获取的,该方法返回一个绑定到lock锁上的condi 阅读全文
posted @ 2022-05-03 22:31 小陈子博客 阅读(920) 评论(0) 推荐(0) 编辑
摘要:非阻塞式获取锁 引言 本节介绍一个和lock锁相关的知识点,非阻塞式获取锁。有非阻塞式就有阻塞式,下面通过两个动画来帮助我们理解他们的意思,以上厕锁为例, 我们先来看阻塞式上厕锁,一群人排着队,依次等待上厕锁。换成线程来说的话,就是一群线程排着队获取锁,只要是等待,那就是阻塞。线程阻塞锁的就是线程在 阅读全文
posted @ 2022-05-03 22:10 小陈子博客 阅读(381) 评论(0) 推荐(0) 编辑
摘要:显式锁(Lock)的使用 引言 在已经有了同步关键字synchronize的的情况下,Java依然在5.0版本中新增了一个同步锁对象lock.又称显示锁,之锁以新增它,是因为synchronize有一些不足,究竟synchronize有哪些不足?在后续课程synchronize与lock的区别,一节 阅读全文
posted @ 2022-05-03 21:48 小陈子博客 阅读(606) 评论(0) 推荐(0) 编辑
摘要:wait与sleep的区别 引言 本节介绍wait方法与sleep方法的区别,一共有7件不同 位置 首先来看第一点位置,sleep方法是线程方法,它位于thread内里面,而wait方法是锁方法,它位于object类里面, 这里展示的是sleep方法锁处的位置以及方法个数。 同样的这里展示的是wai 阅读全文
posted @ 2022-05-03 20:09 小陈子博客 阅读(309) 评论(0) 推荐(0) 编辑
摘要:线程间通讯(wait、notify应用) 引言 线程间如何通讯?通讯的方式其实有好几种,其中有一种就是wait,notify方式,与此相关的,还有一个比较经典的例子,那就是生产者与消费者,生产者指的是生产者线程,消费者指的是消费者线程,生产者线程负责生产数据,消费者线程负责消费数据 数据还没生产的时 阅读全文
posted @ 2022-05-03 19:46 小陈子博客 阅读(89) 评论(0) 推荐(0) 编辑
摘要:等待唤醒机制(wait、notify) 引言 本节介绍一个和同步锁都相关的知识点,等待唤醒机制。下面从3点来介绍等待唤醒机制。 第一点是当前线程等待, 第二点唤醒单个等待的线程, 第三点唤醒所有等待的线程。 使当前线程等待 首先来看第一点,使当前线程等待,使用wait方法即可让当前线程等待, 该方法 阅读全文
posted @ 2022-05-03 19:24 小陈子博客 阅读(988) 评论(0) 推荐(0) 编辑
摘要:死锁是如何产生的 引言 本节介绍一个和同步所相关的知识点死锁。下面从3点来介绍死锁。 第一点什么是死锁? 第二点死锁是如何产生的? 第三点编写一个死锁示例。 什么是死锁? 首先来看第一点,什么是死锁?死锁是指两个或两个以上的线程,在执行过程中,由于竞争资源或者是由于彼此通信而造成的一种阻塞现象,若无 阅读全文
posted @ 2022-05-03 15:09 小陈子博客 阅读(215) 评论(0) 推荐(0) 编辑
摘要:同一把锁 引言 本节给大家演示一下,多个线程争夺同一把锁和不同锁的场景。 同一把锁 首先自定义一个任务,任务内容就是两个线程分别去执行两个不同的同步代码块,如何做到这一点?我们可以定义一个Boolean类型的标记,然后通过标记来切换不同线程去执行不同的代码块。所以这里我们还要定义一个更改标记的方法用 阅读全文
posted @ 2022-05-03 14:51 小陈子博客 阅读(46) 评论(0) 推荐(0) 编辑
摘要:同步锁的类型有哪些 引言 本节介绍一个和同步相关的知识点,同步锁,什么是同步锁? 我们先来看一下它的概念,同步锁是为了保证每个线程都能正常执行原子不可更改操作,同步监听对象/同步锁/同步监听器/互斥锁的一个标记锁。 我们这里先要说明一下,同步监听对象/同步锁/同步监听器/互斥锁,他们表示的都是同一个 阅读全文
posted @ 2022-05-03 14:36 小陈子博客 阅读(173) 评论(0) 推荐(0) 编辑
摘要:导言 创建线程主要是有三种方式,第一种继承thread的类,第二种实现runnable接口。第三种实现callable接口 继承thread 定义 MyThread 首先我们来看第一种,继承thread,我们先自定义一个类,然后使他去继承thread类,继承完以后,我们需要去重写它里面的run方法, 阅读全文
posted @ 2022-04-29 12:00 小陈子博客 阅读(437) 评论(0) 推荐(0) 编辑
摘要:synchronized关键字 导言 本节将介绍多线程中一个比较重要的知识点synchronized的关键字。什么是synchronized的?synchronized的中文叫做同步, 它是一个关键字,可用来给对象和方法或者代码块加锁。当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执 阅读全文
posted @ 2022-04-28 22:21 小陈子博客 阅读(50) 评论(0) 推荐(0) 编辑
摘要:线程组(ThreadGroup) 导言 线程组在实际开发中很少用到,本节将简单的来介绍一下它。 第一点获取线程组 第二点创建建设组 第三点给线程设置限制组 第四点介绍线程组常用的方法。 获取线程组 首先来看第一点,用thread类里面的getthreadgreap方法就可以获取到该线程所处的线程组, 阅读全文
posted @ 2022-04-26 23:23 小陈子博客 阅读(967) 评论(0) 推荐(0) 编辑
摘要:优雅地停止线程 导言 如何让正在运行的线程优雅的停下来,这个问题一直是面试必考题。下面将介绍一种让线程优雅的停下来的方法,这就是位于thread类里面的interrupt方法, 它的作用就是中段线程。 接下来我们将从两个方面演示该方法。 第一个方面就是停止正在运行的线程。 第二个方面就是停止休眠中的 阅读全文
posted @ 2022-04-26 23:04 小陈子博客 阅读(224) 评论(0) 推荐(0) 编辑
摘要:后台线程(Daemon)的作用 导言 如果想让某个线程随着主线程的结束而结束,该如何做?例如线程a如何随着主线程的结束而结束。解决这个问题,我们可以将线程a设置为后台线程,这样线程就会随着主线段的结束而结束。 下面我们将从2点来介绍后台线程。 第一点设置后台线程。 第二点判断线程是否为后台线程。 设 阅读全文
posted @ 2022-04-26 22:51 小陈子博客 阅读(1233) 评论(0) 推荐(0) 编辑
摘要:如何得知线程执行完(isAlive) 导言 如何知道一个线程是否执行完,我们可以通过判断它是否存活来得知它是否执行完。线程若存活则表示他没有执行完,若死亡则表示他执行完。 Thread类里面的isalive方法的作用就是判断线程是否存活。它返回一个布尔类型的结果,线程存活返回true,否则返回是fa 阅读全文
posted @ 2022-04-26 22:38 小陈子博客 阅读(1550) 评论(0) 推荐(0) 编辑
摘要:让线程放弃执行权 导言 如何让正在执行任务的线程放弃执行权,我们可以使用 thread类里面的yield的方法,该方法是一个静态方法,直接使用thread类名调用,它的作用是使当前线程放弃执行权,当前线程由执行状态变为就绪状态。 演示 下面来演示该方法,演示该方法需要用到两个任务,分别是赋值任务和打 阅读全文
posted @ 2022-04-26 22:29 小陈子博客 阅读(71) 评论(0) 推荐(0) 编辑
摘要:等待线程死亡join方法 导言 假设有三个线程,分别是线程a,线程b,和线程c他们各自的任务分别是打印数字一、数字2和数字三, 这三个线程同时启动,如何让这三个线程按顺序执行任务,也就是按顺序打印123 如果想让多个线程按顺序执行,可以使用thread类里面的join方法,它的作用是等待该线程死亡, 阅读全文
posted @ 2022-04-26 22:10 小陈子博客 阅读(92) 评论(0) 推荐(0) 编辑
摘要:使当前正在执行的线程进入休眠状态 导言 有时候我们需要让当前正在执行的线程隔一段时间执行一次,每隔一秒钟打印一次当前时间,这就需要使当前正在执行的线程进入休眠状态 sleep sleep方法的作用,就是使当前正在执行的线程进入休眠状态,它是一个静态方法,直接使用thread类名调用,只有一个参数mi 阅读全文
posted @ 2022-04-26 22:00 小陈子博客 阅读(433) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示