文章分类 -  多线程

摘要:第二题: 答案: 阅读全文
posted @ 2017-08-22 11:53 半生戎马,共话桑麻、 阅读(117) 评论(0) 推荐(0)
摘要:题目: 答案: 阅读全文
posted @ 2017-08-22 11:53 半生戎马,共话桑麻、 阅读(124) 评论(0) 推荐(0)
摘要:范例:在迭代集合的时候修改集合的 改成李四 改成王五 以上异常要查看源代码才能分析清楚(底层代码大概是用外部传入的集合元素的数目是否和自定义的成员变量相等,来判断集合是否被修改过) 以上的List集合是线程不安全的 改进代码:希望把指定的元素删除掉,同时程序不报错,要想实现这个功能,需要用到Java 阅读全文
posted @ 2017-08-21 22:13 半生戎马,共话桑麻、 阅读(179) 评论(0) 推荐(0)
摘要:一个由数组支持的有界阻塞队列。此队列按 FIFO(先进先出)原则对元素进行排序。队列的头部 是在队列中存在时间最长的元素。队列的尾部 是在队列中存在时间最短的元素。新元素插入到队列的尾部,队列获取操作则是从队列头部开始获得元素。 这是一个典型的“有界缓存区”,固定大小的数组在其中保持生产者插入的元素 阅读全文
posted @ 2017-08-21 22:12 半生戎马,共话桑麻、 阅读(129) 评论(0) 推荐(0)
摘要:输出: 阅读全文
posted @ 2017-08-21 21:18 半生戎马,共话桑麻、 阅读(83) 评论(0) 推荐(0)
摘要:范例:3个运动员比赛,1个裁判,各个运动员到场后,准备接收裁判的命令,当裁判发布命令后,各个运动员争先抢后各就各位(时间不一样,随机), 每个运动员就位后,都要等待裁判发号施令,当三个运动员都各就各位了,裁判发送命令,三个运动员开始执行任务,等到三个运动员都完成比赛后, 裁判才可以宣布比赛结果,比赛 阅读全文
posted @ 2017-08-18 13:29 半生戎马,共话桑麻、 阅读(119) 评论(0) 推荐(0)
摘要:一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。 阅读全文
posted @ 2017-08-18 11:44 半生戎马,共话桑麻、 阅读(111) 评论(0) 推荐(0)
摘要:范例:模拟一个银行柜台只有3个窗口,有10个客户过来办理业务 打印结果: 以上结果不准确,需修改代码,合成原子性 阅读全文
posted @ 2017-08-17 22:32 半生戎马,共话桑麻、 阅读(166) 评论(0) 推荐(0)
摘要:实现注意事项 在等待 Condition 时,允许发生“虚假唤醒”,这通常作为对基础平台语义的让步。对于大多数应用程序,这带来的实际影响很小,因为 Condition 应该总是在一个循环中被等待,并测试正被等待的状态声明。某个实现可以随意移除可能的虚假唤醒,但建议应用程序程序员总是假定这些虚假唤醒可 阅读全文
posted @ 2017-08-17 22:31 半生戎马,共话桑麻、 阅读(138) 评论(0) 推荐(0)
摘要:只要有写就要互斥,否则就要有问题,如果都是读那么就没问题 都是读就不要锁了,否则影响性能 打印结果: 写一个缓存系统的Demo 阅读全文
posted @ 2017-08-17 19:35 半生戎马,共话桑麻、 阅读(151) 评论(0) 推荐(0)
摘要:package cn.itcast.demo.thread; import java.util.concurrent.locks.ReentrantLock; public class Lock { public static void main(String[] args) { new Lock().init(); } private void init() { fina... 阅读全文
posted @ 2017-08-17 17:56 半生戎马,共话桑麻、 阅读(78) 评论(0) 推荐(0)
摘要:CompletionService与ExecutorService类似都可以用来执行线程池的任务 范例: 打印结果: 范例:获取线程的执行结果 打印结果: 阅读全文
posted @ 2017-08-17 17:21 半生戎马,共话桑麻、 阅读(120) 评论(0) 推荐(0)
摘要:多个任务,线程池中只有3个线程,一个任务做10次 使用线程池来管理线程并不是单纯的因为可以限制线程总数这一个功能,如果不用线程池,那么每次要新起一个线程,然后do something,关闭线程.当这个do something只是很简单的hello world,那么每次都要创建线程,hello wor 阅读全文
posted @ 2017-08-17 16:37 半生戎马,共话桑麻、 阅读(128) 评论(0) 推荐(0)
摘要:当多个线程访问同一个变量的时候,可以使用jdk已有的类进行操作,好处是这个类本身就体用户考虑到了多线程的问题,无需再考虑多线程安全问题 比如:import java.util.concurrent.atomic.AtomicInteger; 阅读全文
posted @ 2017-08-17 15:13 半生戎马,共话桑麻、 阅读(81) 评论(0) 推荐(0)
摘要:打印结果: 阅读全文
posted @ 2017-08-17 14:51 半生戎马,共话桑麻、 阅读(102) 评论(0) 推荐(0)
摘要:ThreadLocal是什么 早在JDK 1.2的版本中就提供Java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 当使用ThreadLocal维护变量时,ThreadLocal为每个使用该 阅读全文
posted @ 2017-08-16 21:03 半生戎马,共话桑麻、 阅读(118) 评论(0) 推荐(0)
摘要:本节演示不同线程操作同一个变量时,该变量的值可能会不同 1. 先演示相同的情况 打印结果: 不同的情况: 打印结果: 阅读全文
posted @ 2017-08-16 19:14 半生戎马,共话桑麻、 阅读(124) 评论(0) 推荐(0)
摘要:以上代码写的不好,下面是改进后的代码:把子线程和主线程的方法都放到同一个类中 以上代码在控制台只打印了部分,看不出结果,解决方法: 右键--Run As--Run Configurations--Common--在File前面挑上复选框,路径指向磁盘的一个文件,比如 F:\1.txt--执行Run 阅读全文
posted @ 2017-08-16 18:16 半生戎马,共话桑麻、 阅读(105) 评论(0) 推荐(0)
摘要:当有多个线程同时访问同一个方法时,可能会出现线程不安全,银行转账的例子 下面是案例: 打印结果: 解决方法: 更加好的方法:this 保护整个方法,并且同一个对象调用不同方法,也是没有问题的 下面代码会出现线程不同步 解决方法: 阅读全文
posted @ 2017-08-15 22:34 半生戎马,共话桑麻、 阅读(120) 评论(0) 推荐(0)
摘要:10秒后爆炸: 第一次10秒后炸,以后每隔3秒后炸一次 第一次2秒后爆炸,之后是4秒和2秒间隔循环爆炸 阅读全文
posted @ 2017-08-15 17:36 半生戎马,共话桑麻、 阅读(83) 评论(0) 推荐(0)

levels of contents