随笔分类 -  多线程

多线程编程
摘要:一、简介 JDK5以前就有了ThreadLocal,又叫线程本地变量,提供了get与set等方法,这些方法为每一个使用该变量的线程都存有一份独立的副本,因此get总是返回由当前执行线程在调用set方法时设置的最新值。 二、使用 使用方法比较简单,如下。 ThreadLocal<M> threadLo 阅读全文
posted @ 2019-10-03 23:19 烟味i 阅读(327) 评论(0) 推荐(1) 编辑
摘要:闭锁是一种同步工具类,可以延迟线程的进度直到其达到终止状态。 作用:相当于一扇门,在到达结束状态之前,这扇门一直是关闭的,并且没有任务线程能够通过,当到达结束状态时,这扇门会打开并允许所有的线程通过,并且将不会再改变状态,因此这扇门将永远保持打开状态。闭锁可以用来确保某些活动直到其他活动都完成后才继 阅读全文
posted @ 2018-03-02 15:08 烟味i 阅读(164) 评论(0) 推荐(0) 编辑
摘要:多个线程操作同一个方法或变量时常常出现错误,要保证每个线程都正常运行就要通过加锁,每次只有一个能够拿到锁通过。如下: 如果没有synchronized 的话,运行结果如图。 不再是依次打印出名字,该关键字还可以加在代码块里。一般为了性能,我们要减少同步执行的代码数量(可以用同步代码块就不用同步方法) 阅读全文
posted @ 2017-10-19 23:16 烟味i 阅读(363) 评论(0) 推荐(0) 编辑
摘要:执行结果: 之间学习并发编程并没有注意到Timer这个类,可能是被摒弃了吧。毕竟现在项目中的定时任务,可以使用组件quartz或者spring框架自带的Task。 我怀疑后面两种也是基于该类实现吧。 阅读全文
posted @ 2017-10-19 22:32 烟味i 阅读(268) 评论(0) 推荐(0) 编辑
摘要:Exchanger可以在两个线程之间交换数据,只能是2个线程,他不支持更多的线程之间互换数据。 当线程A调用Exchange对象的exchange()方法后,他会陷入阻塞状态,直到线程B也调用了exchange()方法,然后以线程安全的方式交换数据,之后线程A和B继续运行。 执行结果: 可以看到线程 阅读全文
posted @ 2017-09-06 11:09 烟味i 阅读(200) 评论(0) 推荐(0) 编辑
摘要:测试类: 阅读全文
posted @ 2017-06-01 16:43 烟味i 阅读(272) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示
🚀
回顶
收起