随笔分类 -  02-多线程

摘要:Java基础学习:多线程 总结: 后续补充; 代码总结: ​import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.FutureTa 阅读全文
posted @ 2022-03-13 11:07 gzs1024 阅读(87) 评论(0) 推荐(0) 编辑
摘要:Java基础学习:多线程 线程池: 背景:经常创建和销毁,使用量特别大的资源,比如并发情况下的线程,对性能影响很大; 思路:提前创建好多个线程,放入线程池中,使用时直接获取,使用完放回池中;可以避免频繁创建销毁,实现重复利用,类似生活中的公共交通工具; 好处: 提高响应效率(减少了创建新线的时间); 阅读全文
posted @ 2022-03-13 10:55 gzs1024 阅读(242) 评论(0) 推荐(0) 编辑
摘要:Java基础学习:多线程26 信号灯法 并发协作模型:生产者/消费者模型:-->信号灯法; 通过标志位进行控制; 代码案例: /** * 测试生产者消费者问题2:信号灯法,标志位解决 */public class TestPC2 { public static void main(String[] 阅读全文
posted @ 2022-03-13 10:36 gzs1024 阅读(215) 评论(0) 推荐(0) 编辑
摘要:Java基础学习:多线程25 管程法: 多复习; 代码案例: ​/** * 测试生产者消费者模型:利用缓冲区解决:管程法 * * 都有哪些对象:生产者,消费者,产品,缓冲区 * */​​public class TestPC { public static void main(String[] ar 阅读全文
posted @ 2022-03-12 22:09 gzs1024 阅读(71) 评论(0) 推荐(0) 编辑
摘要:Java基础学习:多线程24(重点:线程通信) 线程协作: 生产者消费者模式(是一个问题);(不是23种设计模式) 应用场景:生产者和消费者问题 假设仓库中只能存放一件产品,生产者将生产出来的产品放入仓库,消费者将仓库产品取走消费; 如果仓库中没有产品,则生产者将产品放入仓库,否则停止生产并等待;直 阅读全文
posted @ 2022-03-12 21:29 gzs1024 阅读(34) 评论(0) 推荐(0) 编辑
摘要:Java基础学习:多线程23 Lock锁: 从JDK5.0开始,Java提供了更强大的线程同步机制:通过显式定义同步锁对象来实现同步;同步锁使用Lock对象充当; java.util.concurrent.locks.Lock接口是控制多个线程对共享资源进行访问的工具;锁提供了对共享资源的独占访问, 阅读全文
posted @ 2022-03-12 21:03 gzs1024 阅读(64) 评论(0) 推荐(0) 编辑
摘要:Java基础学习:多线程22 死锁: 多个线程各自占有一些资源,并且互相等待其他线程占有的资源才能运行,而导致2个或多个线程都在等待对方释放资源,都停止执行的情况,某一个同步块同时拥有“2个以上对象的锁”时,就可能发生“死锁”的问题; 死锁怎么去避免:破解死锁产生的条件就可以避免死锁 产生死锁的4个 阅读全文
posted @ 2022-03-12 20:39 gzs1024 阅读(122) 评论(0) 推荐(0) 编辑
摘要:Java基础学习:多线程20 线程同步:Synchronized(同步方法、同步代码块) 同步方法: 由于我们可以通过private关键字来保证数据对象只能被方法访问,所以我们只需要针对方法提出一套机制,这套机制就是synchronized关键字,它包括2种方法: //synchronized 方法 阅读全文
posted @ 2022-03-12 19:46 gzs1024 阅读(130) 评论(0) 推荐(0) 编辑
摘要:Java基础学习:多线程19 三大不安全案例: 买火车票; 取钱; List集合; 代码案例1:买火车票 ​/** * 不安全的买票:多个线程操作同一资源对象; * 1,线程不安全,有负数;(每个线程在自己的工作内存交互,内存控制不当会造成数据不一致) * */public class UnSafe 阅读全文
posted @ 2022-03-12 19:06 gzs1024 阅读(472) 评论(0) 推荐(1) 编辑
摘要:Java基础学习:多线程18 什么是线程同步:(多个线程操作同一资源;) 现实生活中,我们会遇到“同一个资源,多个人都想使用”的问题,比如:食堂排队打饭,每个人都想吃饭,最天然的解决办法就是:排队,一个个来; 处理多线程问题时,(并发:)多个线程访问同一个对象,并且某些线程还想修改这个对象;这时我们 阅读全文
posted @ 2022-03-12 18:12 gzs1024 阅读(27) 评论(0) 推荐(0) 编辑
摘要:Java基础学习:多线程17 守护(daemon)线程: 线程分为用户线程和守护线程; 虚拟机必须确保用户线程执行完毕;main( ) 虚拟机不用等待守护线程执行完毕;gc( ); 如:后台记录操作日志,监控内存,垃圾回收等待。。。 代码案例: ​/** * 测试守护线程: * * 上帝守护你:2个 阅读全文
posted @ 2022-03-12 16:55 gzs1024 阅读(189) 评论(0) 推荐(0) 编辑
摘要:Java基础学习:多线程16 线程的优先级: Java提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程,线程调度器按照优先级决定应该调度哪个线程来执行; 线程的优先级用数字表示:范围从1 - 10; Thread.MIN_PRIORITY=1; Thread.MAX_PRIORITY=10 阅读全文
posted @ 2022-03-12 16:42 gzs1024 阅读(182) 评论(0) 推荐(0) 编辑
摘要:Java基础学习:多线程15 观测线程状态:Thread.State 线程状态,线程可以处于以下几种状态之一: NEW:尚未启动的线程处于此状态; RUNNABLE:在Java虚拟机中执行的线程处于此状态; BLOCKED:被阻塞等待监视器锁定的线程处于此状态; WAITING:正在等待另一个线程执 阅读全文
posted @ 2022-03-12 16:20 gzs1024 阅读(148) 评论(0) 推荐(0) 编辑
摘要:Java基础学习:多线程14 线程强制执行:join Join合并线程,待此线程执行完成后,再执行其他线程,其他线程阻塞; 可以想象为插队; 代码案例: /** * 测试join()方法: * 想象插队; */public class TestJoin implements Runnable{​ @ 阅读全文
posted @ 2022-03-12 15:53 gzs1024 阅读(194) 评论(0) 推荐(0) 编辑
摘要:Java基础学习:多线程13 线程礼让:yield 礼让线程,让当前正在执行的线程暂停,但不阻塞; 将线程从运行状态转为就绪状态; 让CPU重新调度,礼让不一定成功,看CPU心情; 代码案例: ​/** * 测试礼让线程: * 1,礼让不一定成功,看CPU心情 */public class Test 阅读全文
posted @ 2022-03-12 15:42 gzs1024 阅读(31) 评论(0) 推荐(0) 编辑
摘要:Java基础学习:多线程12 线程休眠:sleep sleep(时间)指定当前线程阻塞的毫秒数; sleep存在异常InterruptedException; sleep时间达到后线程进入就绪状态; sleep可以模拟网络延时,倒计时等; 每个对象都有一个锁,sleep不会释放锁; 代码案例:模拟网 阅读全文
posted @ 2022-03-12 15:23 gzs1024 阅读(246) 评论(0) 推荐(0) 编辑
摘要:Java基础学习:多线程09 静态代理模式: 真实对象和代理对象都要实现同一个接口; 代理对象要代理真实角色; 好处: 代理对象可以做很多真实对象做不了的事情; 真实对象就专注做自己的事情; 代码案例:结婚案例 ​/** * 静态代理模式:结婚案例 * * 1,真实对象和代理对象都要实现同一个接口; 阅读全文
posted @ 2022-03-12 12:57 gzs1024 阅读(201) 评论(0) 推荐(0) 编辑
摘要:Java基础学习:多线程08 实现Callable接口: 实现Callable接口,需要返回值类型 重写call方法,需要抛出异常 创建目标对象 创建执行服务:ExecutorService ser=Executors.newFixedThreadPool(1); 提交执行:Future<Boole 阅读全文
posted @ 2022-03-12 11:50 gzs1024 阅读(187) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示