摘要: CountDownLatch(闭锁)计数器 有一个任务A,它要等待其他4个任务执行完毕之后才执行,此时就可以利用CountDownLatch来实现这种功能 package com.cppdy; import java.util.concurrent.CountDownLatch; class MyT 阅读全文
posted @ 2018-11-25 23:24 知识追求者 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 1、Java.util的线程安全工具类 Vector(线程安全) ArrayList(线程不安全) HashTable(线程安全) HashMap(线程不安全) 2、将线程不安全集合变为线程安全集合 3、ConcurrentHashMap(分段存储,分段锁,只要多个修改操作发生在不同的段上,它们就可 阅读全文
posted @ 2018-11-25 22:22 知识追求者 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 如何停止线程 1、使用stop方法强行终止线程(这个方法不推荐使用,可能会出现业务操作未执行完,线程中断了) package com.cppdy; class MyThread15 extends Thread{ @Override public synchronized void run() { 阅读全文
posted @ 2018-11-25 21:45 知识追求者 阅读(138) 评论(0) 推荐(0) 编辑
摘要: Lock锁是JDK1.5之后推出的并发包里面的关键字(注意捕获异常,释放锁) Lock与synchronized的区别 Lock锁可以人为的释放锁(相当于汽车中的手动挡) synchronized当线程执行完毕或者抛出异常的话,锁自动释放(相当于汽车中的自动挡) Condition用法 Condit 阅读全文
posted @ 2018-11-25 21:11 知识追求者 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 多线程通讯实例(必须要有多个线程、必须要管理同一个变量;线程A生产一个变量,线程B消费一个变量) 生产者线程A:如果有值还没读,就等待 消费者线程B:如果全部读完了,就等待 阅读全文
posted @ 2018-11-25 19:37 知识追求者 阅读(137) 评论(0) 推荐(0) 编辑
摘要: ThreadLocal关键字实现每个线程有自己的变量 阅读全文
posted @ 2018-11-25 16:51 知识追求者 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 使用violate关键字解决了变量的可见性问题(volatile让多线程刷新falg的值) 当更改falg的值,volatile会更新其它线程falg的值 阅读全文
posted @ 2018-11-25 16:24 知识追求者 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 使用atomicInteger解决了原子性问题(AtomicInteger保证每次只能一个线程操作count) 原子性:保证10个线程都对count加了1000次,最终结果为10000 阅读全文
posted @ 2018-11-25 15:53 知识追求者 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 死锁产生的原因(必须有两个线程、必须有多个锁、锁之间必须有引用的过程) T1一直等待T2释放this锁 T2又一直等待T1释放ob锁 阅读全文
posted @ 2018-11-25 15:26 知识追求者 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 在静态方法上面加synchonizd用的是字节码文件锁 一般情况下,不使用static锁:JVM编译的时候,static是存到方法区,方法区是垃圾回收机制不会回收的 阅读全文
posted @ 2018-11-25 15:17 知识追求者 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 在方法上面加synchonizd用的是this锁 阅读全文
posted @ 2018-11-25 14:57 知识追求者 阅读(123) 评论(0) 推荐(0) 编辑
摘要: synchonizd解决安全性问题 线程安全问题产生的条件:要有两个线程以上;必须要对同一变量进行操作;必须代码块使用同一把锁 原理:一个拿到锁,其它线程进行等待;释放过后,其它线程才能访问,就是锁的竞争问题,也是死锁产生的条件 阅读全文
posted @ 2018-11-25 14:38 知识追求者 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 多线程安全问题(卖火车票案例) 阅读全文
posted @ 2018-11-25 14:21 知识追求者 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 设置线程优先级:join() 阅读全文
posted @ 2018-11-25 14:01 知识追求者 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 什么是守护线程 守护线程是为用户线程服务的这么一个线程,主线程结束,守护线程也结束 阅读全文
posted @ 2018-11-25 13:37 知识追求者 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 多线程应用实例(批量发送短信) 1、创建实体类 package com.cppdy; public class UserEntity { private int id; private String name; public int getId() { return id; } public voi 阅读全文
posted @ 2018-11-25 00:17 知识追求者 阅读(169) 评论(0) 推荐(0) 编辑