![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程与并发
糖沁
小白最后的倔强,只为对得起曾经放弃的荣誉。
展开
-
【代码】自定义线程池、CountDownLatch案例、CyclicBarrier案例、CompletableFuture手动事务控制、多线程批量插入事务控制
代码展示:自定义线程池、CountDownLatch案例、CyclicBarrier案例、CompletableFuture手动事务控制、多线程批量插入事务控制原创 2023-06-07 12:17:57 · 328 阅读 · 0 评论 -
线程安全之多线程a++计数减少问题(慕课网 -> 线程八大核心+Java并发底层原理精讲 掌握企业级并发问题解决方案)
你讲讲你理解的“线程安全”是什么?《Java Concurrency In Practice》的作者Brian Goetz对“线程安全”有一个比较恰当的定义:“当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的”。这句话的意思是:不管业务中遇到怎样的多个线程访问某对象或某方法的情况,而在编程这个业务逻辑的时候,都不需要额外做任何额外的处理(也就是可以像单线原创 2021-11-01 01:32:49 · 300 阅读 · 0 评论 -
线程各属性(慕课网 -> 线程八大核心+Java并发底层原理精讲 掌握企业级并发问题解决方案)
原创 2021-09-08 18:14:49 · 182 阅读 · 0 评论 -
守护线程和普通线程的区别(慕课网 -> 线程八大核心+Java并发底层原理精讲 掌握企业级并发问题解决方案)
1、整体无区别,守护线程和普通线程都继承父线程,都是…线程2、唯一区别在于JVM的离开守护线程是为我们服务的,不会影响JVM的离开,换言之守护线程是为普通用户线程服务的。普通用户线程运行结束后,JVM会自动离开。问:我们是否需要给线程设置成守护线程?答:不需要,也不应该。...原创 2021-09-08 17:04:41 · 476 阅读 · 0 评论 -
yield方法详解(慕课网 -> 线程八大核心+Java并发底层原理精讲 掌握企业级并发问题解决方案)
yield释放CPU资源还是处于Runnable状态,不会进入Waiting或Blocked状态,随时有可能会再次被调度,不同于sleep,sleep会先进入到阻塞状态,还有一点是JVM不保证遵循,如:当CPU资源充足情况下,调用yield不一定就会释放CPU时间片。...原创 2021-08-15 19:39:29 · 175 阅读 · 0 评论 -
wait和sleep方法的异同?(慕课网 -> 线程八大核心+Java并发底层原理精讲 掌握企业级并发问题解决方案)
wait和sleep方法的异同?相同1、Wait和sleep方法都可以使线程阻塞,对应线程状态是Waiting或Time_Waiting。2、wait和sleep方法都可以响应中断Thread.interrupt()。不同1、wait方法的执行必须在同步方法中进行,而sleep则不需要。2、在同步方法里执行sleep方法时,不会释放monitor锁,但是wait方法会释放monitor锁。3、sleep方法短暂休眠之后会主动退出阻塞,而没有指定时间的 wait方法则需要被其他线程中断后才能退出原创 2021-08-15 00:53:13 · 119 阅读 · 1 评论 -
sleep方法详解(慕课网 -> 线程八大核心+Java并发底层原理精讲 掌握企业级并发问题解决方案)
作用:我只想让线程在预期的时间执行,其他时间不要占用CPU资源讲讲sleep方法的特点?sleep方法可以让线程进入Timed_Waiting状态,并且不占用CPU资源,但是不释放锁(包括synchronize和lock),直到规定时间后再执行,休眠期间如果被中断,会抛出异常并清除中断状态。1、sleep不释放synchronized的Monitorpackage threadcoreknowledge.threadobjectclasscommonmethods;/** * 展示线程sl原创 2021-08-15 00:48:21 · 275 阅读 · 0 评论 -
关于为什么线程通信的方法wait()、notify()、notifyAll()被定义在Object类里面?而sleep为什么定义在Thread类里面?
关于为什么线程通信的方法wait()、notify()、notifyAll()被定义在Object类里面?而sleep为什么定义在Thread类里面?转载 2021-08-14 23:55:37 · 235 阅读 · 0 评论 -
wait作用和用法(慕课网 -> 线程八大核心+Java并发底层原理精讲 掌握企业级并发问题解决方案)
阻塞阶段有的时候我们想让一个线程或多个线程暂时去休息一下-> wait():使线程进入到阻塞状态,等到我们后续需要它的时候,条件成熟的时候再唤醒它 -> notify()、notifyAll():唤醒被阻塞的线程,等待CPU调度。值得注意的一点是:在执行wait()方法前必须先拿到这个对象的monitor锁 当线程拿到进入阻塞状态后1、直至以下四种情况发生时,才会被唤醒另一个线程调用这个对象的notify()方法且刚好被唤醒的是本线程另一个线程调用这个对象的notify(原创 2021-08-11 12:50:13 · 362 阅读 · 0 评论 -
线程的一生——6个状态(生命周期)(慕课网 -> 线程八大核心+Java并发底层原理精讲 掌握企业级并发问题解决方案)
一图讲解状态的含义和变化原创 2021-08-02 16:27:06 · 159 阅读 · 0 评论 -
错误停止线程之volatile设置boolean标记位(慕课网 -> 线程八大核心+Java并发底层原理精讲 掌握企业级并发问题解决方案)
如何停止线程?A. 用volatile的boolean作为标记来停止B. 用stop()方法让线程停止C. 用interrupt来请求线程停止解答:应该选C。原理:用interrupt来请求线程停止而不是强制,好处是安全。想停止线程,要请求方、被停止方、子方法被调用方相互配合才行:a) 作为被停止方:每次循环中或者适时检查中断信号,并且在可能抛出InterrupedException的地方处理该中断信号;b) 请求方:发出中断信号;c) 子方法调用方(被线程调用的方法的作者)要注意:优先原创 2021-08-02 00:06:58 · 793 阅读 · 0 评论 -
线程停止、中断之最佳实践(慕课网 -> 线程八大核心+Java并发底层原理精讲 掌握企业级并发问题解决方案)
什么情况下,线程需要被停止?线程和任务被创建和启动之后,大部分情况下都是自然运行到结束的,自然停止,但有些情况会需要用到停止线程,如:或许用户主动取消,或许服务被快速关闭,或者运行出错或超时情况下线程都需要被停止,这些情况都需要我们主动来停止线程,想让线程安全可靠停止下来并不容易,Java语言没有一种机制来安全正确地停止线程,但是它提供了interrupt,这是一种合作机制。 如何正确停止线程?原理介绍:使用interrupt来通知,而不是强制。通俗理解:就是用一个线程来通知另一个线程让原创 2021-07-31 21:14:54 · 193 阅读 · 1 评论 -
开启多线程启动的新世界(慕课网 -> 线程八大核心+Java并发底层原理精讲 掌握企业级并发问题解决方案)
start()和run()对比package threadcoreknowledge.startthread;public class StartAndRunMethod { public static void main(String[] args) { Runnable runnable = () -> { System.out.println(Thread.currentThread().getName()); };原创 2021-07-26 22:13:28 · 169 阅读 · 0 评论 -
实现多线程的正确姿势(慕课网 -> 线程八大核心+Java并发底层原理精讲 掌握企业级并发问题解决方案)
实现多线程的方法是1种还是2种还是4种?网上的说法。。。。。。。正确的说法实现多线程的官方正确方法:2种方法一:实现Runnable接口package threadcoreknowledge.createthreads;public class RunnableStyle implements Runnable{ public static void main(String[] args) { Thread thread = new Thread(new Runna原创 2021-07-26 17:31:31 · 305 阅读 · 2 评论