黑马程序员12--线程并发库
来源:互联网 发布:linux arp 刷新时间 编辑:程序博客网 时间:2024/05/23 15:48
---------------------- android培训、java培训、期待与您交流! ----------------------
传统线程机制的回顾
创建线程的两种方式
继承:
Thread thread = new Thread(){
run(){
}
};
构造函数实现接口:
Thread thread =new Thread(new Runnable(){
run(){
}
});
Timer定时器的应用
newTimer().schedule(new Runnable(){
run(){
}
},
时间,
时间单位,
);
小知识点:
外面类的静态方法中,不能创建内部类的对象。
因为内部类访问外部类的属性用(外部类.this.属性),可以访问。
而外部类没有实例化,就没有属性,当访问时就报错。
线程之间互斥与同步通信
经验:
要用到共同数据(包括同步锁)的若干个方法,应该归在同一个类身上,这种设计体现了高内聚,和程序的健壮性。
在线程通信时
互斥的问题是写在线程访问资源上,而不是写在线程上。
ThreadLocal线程范围内的共享数据
一个ThreadLocal只能放一个共享数据,而多个数据要创建多个ThreadLocal,也可以把多个数据封装成对象。
还有一中用饿汉式单例模式来封装ThreadLocal
多个线程访问共享数据有那些方式
1.把共享数据封装在另一个对象中,然后将这个对象逐个传递给各个Runnable,这样容易实现对数据的互斥与通信
2.将Runnable作为某一个类中的内部类,共享数据作为这个外部类的成员变量。
java5的线程并发库
AtomicInteger用于多个线程访问共享数据
ThreadPool线程池
分为SingleThreadPool,CachedThreadPool,指定数量的线程池
线程池定时器
Lock与condition实现线程同步通信
具有读锁写锁,多个读锁不互斥,读锁和写锁互斥,写锁和写锁互斥。
同步集合
concurrentHashmap
concurrentSkipListMap
concurrentSkipListSet
copyonWriteArrayList
copyonWriteArrayList
同步队列
synchronousQueue
BlockingQueue
LinkedBlockingQueue
ArrayBlockingQueue
---------------------- android培训、java培训、期待与您交流! ----------------------
- 黑马程序员12--线程并发库
- 黑马程序员---线程并发库
- 黑马程序员_线程并发库
- 黑马程序员-JDK1.5新特性之多线程并发库
- 『黑马程序员』---java--深入加强--线程并发库
- 黑马程序员_基础加强_Java线程通信和线程并发库
- 黑马程序员:Java基础总结----线程池及java5的线程并发库
- 黑马程序员 – 学习Java5线程并发库(3) -- 2013.1.1
- 黑马程序员 – 学习Java5线程并发库(4) -- 2013.1.2
- 黑马程序员 – 学习Java5线程并发库(5) -- 2013.1.3
- 黑马程序员 – 学习Java5线程并发库(6) -- 2013.1.4
- 黑马程序员 – 学习Java5线程并发库(7) -- 2013.1.5
- 黑马程序员 – 学习Java5线程并发库(7) -- 2013.1.5
- 黑马程序员 – 学习Java5线程并发库(7) -- 2013.1.5
- 黑马程序员——Java多线程与线程并发库高级应用笔记
- 黑马程序员-Java基础总结19——线程并发库与传统计时器
- 黑马程序员——Java高新_线程并发库
- 黑马程序员Java学习笔记之多线程(并发)
- 黑马程序员11--类加载器的知识
- android EditText 全面阐述
- c# 鼠标经过事件
- JS Date格式化为yyyy-MM-dd类字符串
- JMeter录制脚本
- 黑马程序员12--线程并发库
- QT开发笔记
- 临界区,互斥量,信号量,事件的区别
- 声明与函数、函数指针
- 做数字阅读?不是疯子就是傻子
- orac-01722无效数字
- 关于JMeter工具使用
- JAVA中new的 理解
- JUNIT在线API以及 assertTrue(boolean condition),assertTrue(String message, boolean condition)