多线程

作者:@冰山醉酒
本文为作者原创,转载请注明出处:https://www.cnblogs.com/douFrank/p/16117950.html


1|0多线程

创建线程

  1. thread class继承thread类

  2. Runnable接口,实现Runnable接口

  3. Callable接口,实现Callable接口

image-20220317172813048

2|0thread

3|0Runnable

4|0Callable

5|0代理模式

6|0Lambda

为什么用:

  1. 避免匿名内部类定义过多

  2. 可以让你的代码看起来很简洁

  3. 去掉了一堆没有意义的代码,只留下核心的逻辑

任何接口,如果只包含唯一一个抽象方法,那它就是一个函数式接口。

 public interface Runnable{
     public abstract void run();
 }//函数式接口(只有一个抽象方法)

对于函数式接口,我们可以通过lambda表达式来创建该接口对象

7|0线程操作

停止线程:不推荐使用JDK提供的stop()、destroy()方法,推荐线程自己停下来,简易使用一个标志位进行终止变量当flag=false,则终止线程运行

线程休眠:每个线程都有一把锁,睡眠不会释放锁。

线程礼让:礼让线程,让当前正在执行的线程停止,但不阻塞。将线程从运行状态转为就绪状态,让CPU从新调度,礼让不一定成功,看CPU心情

线程强制执行:join合并线程,代线程执行完成后,再执行其他线程,其他线程阻塞。可以想象成插队。

线程优先级;现成的优先级用数字表示,范围从1~10,使用getPriority()、setPriority()改变或获取优先级。越高限制性的可能性就越大。但不一定就肯定先执行。

守护线程:线程分为用户线程和守护线程,虚拟机必须保证用户线程执行完毕,虚拟机不用等待守护线程执行完毕

队列同步:队列+锁

image-20220318174355955

方法里面需要修改的内容才需要锁,锁的太多,浪费资源。

8|0死锁

image-20220318195941410

9|0Lock锁

image-20220318200936664

lock与snychronized的对比

image-20220318201134107

10|0生产者与消费者问题

11|0线程池

 


__EOF__

本文作者冰山醉酒
本文链接https://www.cnblogs.com/douFrank/p/16117950.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   冰山醉酒  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示