多线程
文章平均质量分 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 · 146 阅读 · 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 · 112 阅读 · 0 评论 -
16 线程池 代码:测试线程池
线程池 创建背景:经常创建和销毁、使用量特别大的资源,比如并发情况下的线程,对性能影响很大。 思路:提前创建好多个线程,放入线程池中,使用时直接获取,使用完放回池中。可以避免频繁创建销毁、实现重复利用。类似生活中的公共交通工具。 好处: 提高响应速度(减少了创建新线程的时间) 降低资源消耗(重复利线程池中线程,不需要每次都创建) 便于线程管理(…) corePoolSize:核心池的大小 maximumPoolSize:最大线程数 keepAliveTime:线程没有任务时最多保持多长时间后原创 2022-03-25 15:24:23 · 252 阅读 · 0 评论 -
15 线程协作 线程通信 线程通信-分析 解决方式1 解决方式2 代码:生产者消费者模型--->利用缓冲区解决:管程法 代码:测试生产者消费者问题2:信号灯法,标志位解决
线程协作 生产者消费模式是一个问题,不是一个模式 线程通信 应用场景:生产者和消费者问题 假设仓库中只能存放一件产品,生产者将生成出来的产品放入仓库,消费者将仓库中的产品取走消费。 如果仓库中没有产品,则生产者将产品放入仓库,否则停止生成并等待,直到仓库中的产品被消费者取走为止。 如果仓库中放有产品,则消费者可以将产品取走消费,否则停止消费并等待,直到仓库中再次放入产品为止。 线程通信-分析 这是一个线程同步问题,生产者和消费者共享同一个资源,并且生产者和消费者之间相互依赖,互为太哦见。原创 2022-03-25 15:23:45 · 367 阅读 · 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 · 229 阅读 · 0 评论 -
13 死锁 代码:死锁 代码:避免死锁-不套锁 死锁避免方法
死锁 多个线程各自占有一些共享资源,并且互相等待其他线程占有的资源才能运行,而导致两个或者多个线程都在等待对方释放资源,都停止执行的情形,某一个同步块同时拥有“两个以上对象锁”时,就可能会发生"死锁"问题。 代码:死锁 // 多个线程互相抱着对方需要的资源,然后形成僵持 public class DeadLock(){ public static void main(String[] args){ Makeup g1 = new Makerup(0,"灰姑娘"); Makeu原创 2022-03-25 15:20:43 · 278 阅读 · 0 评论 -
12 线程同步 同步方法 同步方法的弊端 同步块syschronized 代码:安全的买票 代码:安全的取钱 代码:安全的集合 测试JUC安全类型的集合
同步方法 由于我们可以通过private管金子来保障数据对象只能被方法访问,所以我们只需要针对方法提出一套机制,这套机制就是synchronized关键字,它敖阔两种用法: syschronized方法和stanchronized快 同步方法:public synchronized void method(int args){} synchronized方法控制对“对象”的访问,每个对象对应一把锁,每个syschronized方法都必须获得调用该方法的对象的锁才能执行,否则线程会阻塞,方法一旦执行,原创 2022-03-25 15:18:52 · 160 阅读 · 0 评论 -
11 线程同步 并发 线程同步 队列和锁 代码:不安全的买票 代码:不安全的取钱 代码:线程不安全的集合
线程同步 现实生活中,我们遇到“同一个资源,多个人都想使用”的问题,比如,食堂排队打饭,每个人都想吃饭,最天然的解决办法就是排队,一个个来。 处理多线程问题时,多个线程访问同一个对象,并且某些线程还想修改这个对象,这时我们就需要线程同步,线程同步其实就是一种等待机制,多个需要同时访问的线程进入这个对象的等待池形成队列,等待前面线程使用完毕,下一个线程再使用。 由于同一进程的多个线程共享同一块存储空间,在带来方便的同时,也带来了访问冲突问题,为了宝珠数据在方法中被访问时的正确性,在访问时加入锁机制原创 2022-03-25 15:17:07 · 145 阅读 · 0 评论 -
10 线程状态 线程状态观测 概念 代码:观察测试线程的状态 线程优先级 代码:测试线程的优先级 守护(daemon)线程 代码:测试守护线程
线程状态观测 概念 Thread.State 线程状态。线程可以处于以下状态之一: NEW 尚未启动的线程处于此状态。 RUNNABLE 在Java虚拟机中执行的线程处于此状态。 BLOCKED 被阻塞等待监视器锁定的线程处于此状态。 WAITING 正在等待另一个线程执行特定动作的线程处于此状态。 TIMED_WAITING 正在等待另一个线程执行动作达到指定等待时间的线程处于此状态。 TERMINATED 已退出的线程处于此状态。 一个线程可以在给定时间点处于一个状态。 这些状态是不反映任何原创 2022-03-24 22:12:11 · 859 阅读 · 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 · 244 阅读 · 0 评论 -
08 线程状态 五大状态 流程图 线程方法 停止线程 代码 线程休眠 代码:模拟网络延时 代码:打印当前系统时间
线程状态 五大状态 new --> 创建状态 start() --> 就绪状态 CPU调度 --> 运行状态 sleep() --> 阻塞状态 正常执行完 --> 死亡状态 流程图 线程方法 停止线程 不推荐使用JDK提供的stop()、destroy()方法【已废弃】 推荐线程自己停止下来 建议使用一个标志位进行终止变量,当flag=false,则终止线程运行。 建议线程正常停止 —> 利用次数,不建议死循环 建议使用标志位 —&g原创 2022-03-24 22:08:52 · 364 阅读 · 0 评论 -
07 Lamda表达式 概念 函数式接口 代码 总结
Lamda表达式 概念 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3DfR5Eeh-1648130664739)(E:\aChihiro\MD文件夹\开发区\存档文档\image-20220317164503463.png)] λ希腊字母表中排序第十一位的字幕,应为名称为Lambda 避免匿名内部类定义过多 其实只属于函数式编程的概念 (params) -> expression [表达式] (params) -> statement [语句]原创 2022-03-24 22:05:06 · 235 阅读 · 0 评论 -
06 静态代理模式 总结 代码
静态代理模式 你:真实角色 婚庆公司:代理你,帮你处理结婚的事 结婚:实现都实现结婚接口即可 演示:实现静态代理对比Thread 总结 静态代理模式: 真实对象和代理对象都要实现同一个接口 代理对象要代理真实角色 好处: 代理对象可以做很多真实对象做不了的事情 真实对象专注做自己的事情 代码 public class StacticProxy{ public static void main(String[] args) { new Thread(()-原创 2022-03-24 22:03:37 · 102 阅读 · 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 · 100 阅读 · 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 · 232 阅读 · 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 · 181 阅读 · 0 评论 -
02 线程简介 多任务 多线程 普通方法调用和多线程 程序.进程.线程 Proces与Thread 核心概念
线程简介 任务,进程,线程,多线程 多任务 多任务处理是指用户可以在同一时间内运行多个应用程序,每个应用程序被称作一个任务 多线程 原来是一条路,慢慢因为车太多了,道路堵塞,效率极低。 为了提高使用的效率,能够充分利用道路,于是加多了多个车道。 普通方法调用和多线程 程序.进程.线程 在操作系统中运行的程序就是进程,比如你的QQ、播放器、游戏、IDE等等。 一个进程可以有多个线程,如视频中同时听声音,看图像,看弹幕,等等。 Proces与Thread 说起进程,就不得不说下程序。程序是指令和数据的有序原创 2022-03-24 21:50:21 · 259 阅读 · 0 评论 -
01 多线程详解 笔记介绍 目录
笔记介绍 大家好,这里是千寻简笔记,我是作者星辰,笔记内容整理并发布,内容有误请指出,笔记源码已开源,前往Gitee搜索《chihiro-notes》感谢您的观看 作者各大平台直链: GitHub | Gitee | CSDN | 千寻简博客 目录 笔记介绍 线程简介 多任务 多线程 普通方法调用和多线程 程序.进程.线程 Proces与Thread 核心概念 线程创建* 三种创建方式 Thread 代码 总结 案例:下载图片 代码 Runnable 代码 案例:Runnable重写原创 2022-03-24 21:47:46 · 199 阅读 · 0 评论