
多线程
文章平均质量分 54
学以致用
千寻简
欢迎来到星辰的博客!我专注于分享 Java 微服务架构和人工智能(AI)领域的最新动态与技术实践。在这里,你将深入了解微服务架构的设计与实现,探索 Spring Boot、Spring Cloud 等框架的应用,以及如何在实际项目中运用这些技术。同时,我也会分享 AI 领域的最新进展,特别是 ChatGPT 和大型语言模型(LLMs)方面的内容,包括模型训练、优化、应用实例等。无论你是 Java 开发者还是 AI 爱好者,这里都有你感兴趣的内容。感谢大家的支持与关注!
展开
-
千寻简Java词典音标版
文章源文件笔记上传到码云和GitHub,搜索chihiro-notes即可下载源文件,如果对你有帮助,请帮忙点一下赞叭~array 数组 /əˈrā/accessible 可存取的 /əkˈsesəb(ə)l/area 面积 /ˈerēə/audio 音频 /ˈɔːdiəʊ/addition 加法 /ə’dɪʃ(ə)n/action 行动 /'ækʃ(ə)n/arithmetic 算法 /.ærɪθ’metɪk/adjustment 调整 /əˈjəstmənt/actual 真实的 /ˈak(t)SH原创 2022-06-27 20:56:05 · 172 阅读 · 0 评论 -
17 总结 回顾总结线程的创建 1.继承Thread类 2.实现Runnable接口 3.实现Callable接口
总结回顾总结线程的创建1.继承Thread类//main调用:new MyThread1().start();class MyThread extends Thread(){ @Override public void run(){ System.out.println("MyThread1"); }}2.实现Runnable接口//main调用:new Thread(new MyThread2).start();class MyThre原创 2022-03-25 15:29:51 · 130 阅读 · 0 评论 -
16 线程池 代码:测试线程池
线程池创建背景:经常创建和销毁、使用量特别大的资源,比如并发情况下的线程,对性能影响很大。思路:提前创建好多个线程,放入线程池中,使用时直接获取,使用完放回池中。可以避免频繁创建销毁、实现重复利用。类似生活中的公共交通工具。好处:提高响应速度(减少了创建新线程的时间)降低资源消耗(重复利线程池中线程,不需要每次都创建)便于线程管理(…)corePoolSize:核心池的大小maximumPoolSize:最大线程数keepAliveTime:线程没有任务时最多保持多长时间后原创 2022-03-25 15:24:23 · 264 阅读 · 0 评论 -
15 线程协作 线程通信 线程通信-分析 解决方式1 解决方式2 代码:生产者消费者模型--->利用缓冲区解决:管程法 代码:测试生产者消费者问题2:信号灯法,标志位解决
线程协作生产者消费模式是一个问题,不是一个模式线程通信应用场景:生产者和消费者问题假设仓库中只能存放一件产品,生产者将生成出来的产品放入仓库,消费者将仓库中的产品取走消费。如果仓库中没有产品,则生产者将产品放入仓库,否则停止生成并等待,直到仓库中的产品被消费者取走为止。如果仓库中放有产品,则消费者可以将产品取走消费,否则停止消费并等待,直到仓库中再次放入产品为止。线程通信-分析这是一个线程同步问题,生产者和消费者共享同一个资源,并且生产者和消费者之间相互依赖,互为太哦见。原创 2022-03-25 15:23:45 · 377 阅读 · 0 评论 -
14 Lock(锁)代码:测试Lock锁 synchronized与Lock的对比
Lock(锁)从JDK5.0开始,Java提供了更强大的线程同步机制–通过显式定义同步锁对象来实现同步。同步锁使用Lock对象充当。java.util.concurrent.locks.Lock接口是控制多个线程对共享资源进行访问的工具。锁提供了对共享资源的独占访问,每次只能有一个线程对Lock对象加锁,线程开始访问共享资源之前应先获得Lock对象ReentrantLock类实现了Lock,它拥有与syschronized相同的并发性和内存语义,在实现线程安全的控制中,比较常用的是Reentrant原创 2022-03-25 15:21:53 · 250 阅读 · 0 评论 -
13 死锁 代码:死锁 代码:避免死锁-不套锁 死锁避免方法
死锁多个线程各自占有一些共享资源,并且互相等待其他线程占有的资源才能运行,而导致两个或者多个线程都在等待对方释放资源,都停止执行的情形,某一个同步块同时拥有“两个以上对象锁”时,就可能会发生"死锁"问题。代码:死锁// 多个线程互相抱着对方需要的资源,然后形成僵持public class DeadLock(){ public static void main(String[] args){ Makeup g1 = new Makerup(0,"灰姑娘"); Makeu原创 2022-03-25 15:20:43 · 292 阅读 · 0 评论 -
12 线程同步 同步方法 同步方法的弊端 同步块syschronized 代码:安全的买票 代码:安全的取钱 代码:安全的集合 测试JUC安全类型的集合
同步方法由于我们可以通过private管金子来保障数据对象只能被方法访问,所以我们只需要针对方法提出一套机制,这套机制就是synchronized关键字,它敖阔两种用法:syschronized方法和stanchronized快同步方法:public synchronized void method(int args){}synchronized方法控制对“对象”的访问,每个对象对应一把锁,每个syschronized方法都必须获得调用该方法的对象的锁才能执行,否则线程会阻塞,方法一旦执行,原创 2022-03-25 15:18:52 · 173 阅读 · 0 评论 -
11 线程同步 并发 线程同步 队列和锁 代码:不安全的买票 代码:不安全的取钱 代码:线程不安全的集合
线程同步现实生活中,我们遇到“同一个资源,多个人都想使用”的问题,比如,食堂排队打饭,每个人都想吃饭,最天然的解决办法就是排队,一个个来。处理多线程问题时,多个线程访问同一个对象,并且某些线程还想修改这个对象,这时我们就需要线程同步,线程同步其实就是一种等待机制,多个需要同时访问的线程进入这个对象的等待池形成队列,等待前面线程使用完毕,下一个线程再使用。由于同一进程的多个线程共享同一块存储空间,在带来方便的同时,也带来了访问冲突问题,为了宝珠数据在方法中被访问时的正确性,在访问时加入锁机制原创 2022-03-25 15:17:07 · 157 阅读 · 0 评论 -
10 线程状态 线程状态观测 概念 代码:观察测试线程的状态 线程优先级 代码:测试线程的优先级 守护(daemon)线程 代码:测试守护线程
线程状态观测概念Thread.State线程状态。线程可以处于以下状态之一:NEW尚未启动的线程处于此状态。RUNNABLE在Java虚拟机中执行的线程处于此状态。BLOCKED被阻塞等待监视器锁定的线程处于此状态。WAITING正在等待另一个线程执行特定动作的线程处于此状态。TIMED_WAITING正在等待另一个线程执行动作达到指定等待时间的线程处于此状态。TERMINATED已退出的线程处于此状态。一个线程可以在给定时间点处于一个状态。 这些状态是不反映任何原创 2022-03-24 22:12:11 · 868 阅读 · 0 评论 -
09 线程状态 线程礼让 概念 代码:测试礼让线程 Join 代码:测试join方法
线程礼让概念礼让线程,让当前正在执行的线程暂停,但不阻塞将线程从运行状态转为就绪状态让cpu重新调度,礼让不一定成功!看CPU心情代码:测试礼让线程public class TestYield{ public static void main(String[] args){ MyYield myYield = new MyYield(); new Thread(myYield,"a").start(); new Threa原创 2022-03-24 22:10:33 · 257 阅读 · 0 评论 -
08 线程状态 五大状态 流程图 线程方法 停止线程 代码 线程休眠 代码:模拟网络延时 代码:打印当前系统时间
线程状态五大状态new --> 创建状态start() --> 就绪状态CPU调度 --> 运行状态sleep() --> 阻塞状态正常执行完 --> 死亡状态流程图线程方法停止线程不推荐使用JDK提供的stop()、destroy()方法【已废弃】推荐线程自己停止下来建议使用一个标志位进行终止变量,当flag=false,则终止线程运行。建议线程正常停止 —> 利用次数,不建议死循环建议使用标志位 —&g原创 2022-03-24 22:08:52 · 383 阅读 · 0 评论 -
07 Lamda表达式 概念 函数式接口 代码 总结
Lamda表达式概念[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3DfR5Eeh-1648130664739)(E:\aChihiro\MD文件夹\开发区\存档文档\image-20220317164503463.png)]λ希腊字母表中排序第十一位的字幕,应为名称为Lambda避免匿名内部类定义过多其实只属于函数式编程的概念(params) -> expression [表达式](params) -> statement [语句]原创 2022-03-24 22:05:06 · 251 阅读 · 0 评论 -
06 静态代理模式 总结 代码
静态代理模式你:真实角色婚庆公司:代理你,帮你处理结婚的事结婚:实现都实现结婚接口即可演示:实现静态代理对比Thread总结静态代理模式:真实对象和代理对象都要实现同一个接口代理对象要代理真实角色好处:代理对象可以做很多真实对象做不了的事情真实对象专注做自己的事情代码public class StacticProxy{ public static void main(String[] args) { new Thread(()-原创 2022-03-24 22:03:37 · 116 阅读 · 0 评论 -
05 线程创建 Callable 案例:利用callable改造下载图片案例 总结
Callable实现Callable接口,需要返回值类型重写call方法,需要抛出异常创建目标对象创建执行服务:ExecutorService ser = Executors.newFixedThreadPool(1);提交执行:Future result1 = ser.submit(t1);获取结果:boolean r1 = result1.get()关闭服务:ser.shutdownNow();案例:利用callable改造下载图片案例// 第一步:先导包:commons-io-原创 2022-03-24 22:01:47 · 110 阅读 · 0 评论 -
04 线程创建 Runnable 代码 案例:Runnable重写下载图片案例 小结 案例:实现多个线程同时操作同一个对象 案例:龟兔赛跑-Race
Runnable定义MyRunnable类实现Runnable接口**实现run()**方法,编写线程执行体创建线程对象,调用**start()**方法启动线程代码// 创建线程方式2:实现Runnable接口,重写run方法,执行线程需要丢入runnable接口实现类,调用start方法。// 创建线程方式一:继承Thread类,重写run() 方法,调用start开启线程public class TestThread3 implements Runnable{ @Over原创 2022-03-24 21:57:59 · 249 阅读 · 0 评论 -
03 线程创建 三种创建方式 Thread 代码 总结 案例:下载图片
线程创建*Thread、Runnable、Callable三种创建方式Thread class*Runnable 接口*Callable 接口Thread学习提示:查看JDK帮助文档自定义线程类继承Thread类重写run()方法,编写线程执行体创建线程对象,调用start()方法启动线程代码// 创建线程方式一:继承Thread类,重写run() 方法,调用start开启线程public class TestThread1 extends Thread{ @Ov原创 2022-03-24 21:55:15 · 188 阅读 · 0 评论 -
02 线程简介 多任务 多线程 普通方法调用和多线程 程序.进程.线程 Proces与Thread 核心概念
线程简介任务,进程,线程,多线程多任务多任务处理是指用户可以在同一时间内运行多个应用程序,每个应用程序被称作一个任务多线程原来是一条路,慢慢因为车太多了,道路堵塞,效率极低。为了提高使用的效率,能够充分利用道路,于是加多了多个车道。普通方法调用和多线程程序.进程.线程在操作系统中运行的程序就是进程,比如你的QQ、播放器、游戏、IDE等等。一个进程可以有多个线程,如视频中同时听声音,看图像,看弹幕,等等。Proces与Thread说起进程,就不得不说下程序。程序是指令和数据的有序原创 2022-03-24 21:50:21 · 272 阅读 · 0 评论 -
01 多线程详解 笔记介绍 目录
笔记介绍大家好,这里是千寻简笔记,我是作者星辰,笔记内容整理并发布,内容有误请指出,笔记源码已开源,前往Gitee搜索《chihiro-notes》感谢您的观看作者各大平台直链: GitHub | Gitee | 优快云 | 千寻简博客目录笔记介绍线程简介多任务多线程普通方法调用和多线程程序.进程.线程Proces与Thread核心概念线程创建*三种创建方式Thread代码总结案例:下载图片代码Runnable代码案例:Runnable重写原创 2022-03-24 21:47:46 · 210 阅读 · 0 评论