![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
多线程&并发
你要懂的不只是多线程,计算机世界里不可不谈的概念!
一颗剽悍的种子
公众号:一颗剽悍的种子
展开
-
深入多线程十七:什么是池?线程池方式解决生产者与消费者问题
什么是池?谈线程池之前,有没有对池这个概念感到很熟悉?没错啦,我们连接数据库的时候,就有一个常用的池叫做连接池。竟然同样是池,那么就有它们相同的地方!可以理解成一个空间里,放入空闲的线程,需要时从池中取,而用完没有直接释放掉,再放到池中给下一次请求可直接复用。其他几种池的设计思想也是如此,一样一样的。什么是线程池?线程池就是提前创建多个线程,放入线程池中,使用便直接获取,用完放回池中;避免了频繁创建销毁、重复利用,大大减少资源的浪费。原创 2020-08-29 03:03:00 · 646 阅读 · 0 评论 -
深入多线程十六:信号灯方式解决生产者与消费者问题
在现实当中,信号灯通过传达信号,提示车和行人,红灯停,绿灯行,彼此达成共识,能更加有序和有效率流动。同理,我们通过信号灯方式解决生产者与消费者问题也是一样一样的,我们在代码中是用一个标识符表达。 boolean lamp = true;原创 2020-08-28 23:52:38 · 595 阅读 · 0 评论 -
深入多线程十五:管程方式解决生产者与消费者问题
生产者将生产好的数据放入缓冲区,消费者从缓冲区拿出数据。可以简单滴理解成有两个人,他们在相隔很远的地方需要交谈(通信),那么他们只能通过电话或者微信等等方式,来实现交流。也就说通过某个传输和接收信息的媒介,就能畅通的通信。原创 2020-08-28 15:36:43 · 722 阅读 · 0 评论 -
深入多线程十四:经典生产者与消费者问题,本质是线程通信问题
生产者和消费者共享的是同一个资源 (超市),生产者和消费者之间相互依赖和互为条件,所以 这是一个线程同步问题。在解决生产者消费者问题中,仅有我们之前系列所学的synchronized是不够的。虽然synchronized可以实现同步,阻止并发更新同一个共享资源,但是不能实现不同线程之间的通信。原创 2020-08-27 22:14:14 · 587 阅读 · 0 评论 -
深入多线程十三:什么是Lock锁,比起synchronized锁有什么区别?(代码示例)
除了synchronized锁,在JDK 1.5,Java提供了更强大的线程同步机制,比起 synchronized 隐式的方式,虽然可以看到它锁的代码片段,但看不到更具体的;不同synchronized锁,Lock锁可以看到它的开始和结束。(用法也是如此,手动创建Lock锁,需要手动关闭Lock锁)。Lock是显性的方式来实现同步。原创 2020-08-21 23:19:19 · 1599 阅读 · 0 评论 -
深入多线程十二:什么是死锁?(场景+代码示例)
多线程因竞争资源而导致两个或者多个线程僵持(相互等待),停止执行的现象。当一个同步块同时拥有“两个以上对象的锁”,就可能会发生"死锁"问题。原创 2020-08-21 17:35:53 · 811 阅读 · 0 评论 -
深入多线程十一:超全synchronized的两种用法:同步方法与同步块(解决线程不安全问题+举栗子)
通过synchronized关键字,锁机制,只允许独占对应代码段,其他线程必须等待使用后才释放锁,避免多线程同时修改数据。简单的说同步块可以更准确的控制需要的同步代码块。只有有效的缩小同步范围,才可以保证在并发安全的前提下也能提高性能。原创 2020-08-16 22:02:31 · 721 阅读 · 0 评论 -
深入多线程十:只有从不同案例中,才能深刻体会多线程的不安全,从而才能更好的解决!(案例+代码示例)
但是看似越简单的synchronized,背后也会越复杂。如果只是单纯碰到线程问题就往上加,那么离底层的原理和机制就会越遥远;不仅碰到不同的小问题解决得吃力,大问题我想就不用说了。只有从深刻的线程中体会到安全问题,才能更透彻领悟线程同步原理和机制。原创 2020-08-14 00:28:21 · 395 阅读 · 0 评论 -
深入多线程九:守护线程(代码示例)
Java线程中分为用户线程和守护线程。JVM虚拟机不用等待守护线程执行完毕。JVM虚拟机不用等待守护线程执行完毕。默认是Thread.setDaemon(false)为用户线程。可以通过Thread.setDaemon(true)设置为守护线程。守护线程顾名思义,系统的守护者,默默完成一些如:记录操作日志,监控内存,垃圾回收等等。原创 2020-08-12 08:35:36 · 717 阅读 · 0 评论 -
深入多线程八:多线程的优先级(代码示例)
在系统中,线程是可以划分优先等级的。并不是线程优先级高就能获得CPU资源,是要看CPU调度滴!但是优先级高,线程得到的CPU资源权重也会更多,也就是说获得资源的概率也会高。线程的优先级用数字表示,范围从1~10,数字越大,优先级越高。原创 2020-08-12 00:36:34 · 1236 阅读 · 2 评论 -
深入多线程七:纯手绘图解多线程状态+代码示例,就问你怕了吗?
在学习Java的道路上,是否路过多线程时总让你很迷惘;很不巧,我也是,而使我们感到很迷惘主要原因都源于没有对概念的深深的理解和实践。所以我决定漫步Java多线程,同你一起会会多线程。多线程系列多线程系列一:理解多线程在于深深地理解了多任务、进程、多线程、线程多线程系列二:手撕多线程,从会三种创建多线程方式开始:除了常见的两种,你是否了解Callable接口方式?多线程系列三:初遇并发问题:从一个小故事开始,从一行行代码开始多线程系列四:停止多线程,你不会还以为是用stop和destroy吧?.原创 2020-08-11 20:54:40 · 1130 阅读 · 0 评论 -
深入多线程六:线程礼让与强制执行(代码示例+用栗子比较)
在学习Java的道路上,是否路过多线程时总让你很迷惘;很不巧,我也是,而使我们感到很迷惘主要原因都源于没有对概念的深深的理解和实践。所以我决定漫步Java多线程,同你一起会会多线程。多线程系列多线程系列一:理解多线程在于深深地理解了多任务、进程、多线程、线程多线程系列二:手撕多线程,从会三种创建多线程方式开始:除了常见的两种,你是否了解Callable接口方式?多线程系列三:初遇并发问题:从一个小故事开始,从一行行代码开始多线程系列四:停止多线程,你不会还以为是用stop和destroy吧?.原创 2020-08-11 00:30:25 · 1293 阅读 · 0 评论 -
深入多线程五:多线程为何要使用休眠?(案例+代码示例)
使用sleep加速和放大了问题的发生,起到模拟网络延时的效果。sleep*时间达到后线程会进入就绪状态。还有第二点会在谈到多线程同步时谈到,在每个对象中都会有一个锁,而sleep不会释放锁。原创 2020-08-10 17:55:30 · 2564 阅读 · 1 评论 -
深入多线程四:停止多线程,你不会还以为是用stop和destroy吧?
停止线程已经不推荐使用已经废弃的JDK的stop()、destroy() 方法。而推荐线程自己停止下来。建议可以使用一个标志位进行终止变量,当变量为false,则终止线程运行。不仅IDEA开发工具会提示你已弃用。原创 2020-08-08 23:57:57 · 1185 阅读 · 0 评论 -
深入多线程三:初遇并发问题:从一个小故事开始,从一行行代码开始
从多任务、进程、多线程、线程概念的理解,到开始实践创建多线程,这是一种循环渐进的方式;但是多线程遇到最核心的问题是并发的问题。所以我们从一个小故事开始,从一行行代码开始...原创 2020-08-07 11:28:56 · 1088 阅读 · 1 评论 -
深入多线程二:手撕多线程,从会三种创建多线程方式开始:除了常见的两种,你是否了解Callable接口方式?
在学习Java的道路上,是否路过多线程时总让你很迷惘;很不巧,我也是,而使我们感到很迷惘主要原因都源于没有对概念的深深的理解和实践。所以我决定漫步Java多线程,同你一起会会多线程。原创 2020-08-06 01:45:57 · 783 阅读 · 0 评论 -
深入多线程系列一:理解多线程在于深深地理解了多任务、进程、多线程、线程
在计算机的世界中,你得看到更加广阔的视野,除了你可能了解的多线程,其实还有着多任务、进程、线程这些概念。多任务什么是多任务?,从字面意思理解就简单多了,多 字很好理解,不单一个,有两个或两个以上;而 任务 呢?这个也不难,每个进程都可以称作一个任务。多任务是指用户在同一时间内运行多个进程。举个生活中的小栗子当你在上你最喜爱的编程课的时候,你的好兄弟 一颗剽悍的种子 叫你吃鸡,你想啊,难得好兄弟叫你一起开黑,当然是赶紧上号;所以你一边和好兄弟一起打游戏,一边还要看看眼前的老师在敲代码(其实是.原创 2020-08-05 11:36:31 · 1066 阅读 · 0 评论