一.传统的创见线程的两种方式.
1 Thread thread=new Thread();
thread.start();
2 Thread thread=new Thread(new Runnable(){
});
thread.start(); 体现面向对象编程.
3. 都实现 run()方法.
4 多线程机制会降低程序运行效率.
5.多线程下载,只是强占服务器的带宽.
6 Timer 定时器 的使用 . schedule.
7 线程之间互斥与同步通信 .
静态方法没法new 内部类 . synchronized 关键字.来打到线程互斥的效果
8.线程范围内的数据共享 . 用ThreadLocal 来实现 .
9.多个线程之间的共享数据.
10. java5 增加的并发 . 原子性操作类的用途 , 例如: AtomicInteger类的使用方法.
11.java5 提供了线程池 Executors类的使用 . 单例线程 , 死掉后重新生成一个只有一个线程的线程池.
12. Callable 和 Future . Callable 执行完了返回的结果交给 Future .
13. Lock 和 Condition 实现线程同步通信. 类似 synchronized .
读写锁: 分为读锁和写锁,多个读锁不互斥,读锁和写锁互斥,写锁与写锁互斥. 写锁中挂读锁时,会把自己降级为更新锁.
14. Condition 用来实现类似传统线程技术中的wait 和 notify的功能.
15. Semaphore 实现信号灯.
16. CyclicBarrier 等待所有的线程运行到同一个时刻时继续 和 CountDownLatch 倒计时器 .
17. Exchanger 实现两个线程的数据交换 .
18.可阻塞队列 BlockingQueue . 匿名构造方法在,普通构造方法之前运行.
19.同步集合. concurrentHashMap或在使用HashMap 的时候加上同步标志. 解决是死循环. CopyOnWriteArrayList 代替ArrayList .
HashSet 和 HashMap的区别 public HashSet(){map=new HashMap<E,Object>()}
1 Thread thread=new Thread();
thread.start();
2 Thread thread=new Thread(new Runnable(){
});
thread.start(); 体现面向对象编程.
3. 都实现 run()方法.
4 多线程机制会降低程序运行效率.
5.多线程下载,只是强占服务器的带宽.
6 Timer 定时器 的使用 . schedule.
7 线程之间互斥与同步通信 .
静态方法没法new 内部类 . synchronized 关键字.来打到线程互斥的效果
8.线程范围内的数据共享 . 用ThreadLocal 来实现 .
9.多个线程之间的共享数据.
10. java5 增加的并发 . 原子性操作类的用途 , 例如: AtomicInteger类的使用方法.
11.java5 提供了线程池 Executors类的使用 . 单例线程 , 死掉后重新生成一个只有一个线程的线程池.
12. Callable 和 Future . Callable 执行完了返回的结果交给 Future .
13. Lock 和 Condition 实现线程同步通信. 类似 synchronized .
读写锁: 分为读锁和写锁,多个读锁不互斥,读锁和写锁互斥,写锁与写锁互斥. 写锁中挂读锁时,会把自己降级为更新锁.
14. Condition 用来实现类似传统线程技术中的wait 和 notify的功能.
15. Semaphore 实现信号灯.
16. CyclicBarrier 等待所有的线程运行到同一个时刻时继续 和 CountDownLatch 倒计时器 .
17. Exchanger 实现两个线程的数据交换 .
18.可阻塞队列 BlockingQueue . 匿名构造方法在,普通构造方法之前运行.
19.同步集合. concurrentHashMap或在使用HashMap 的时候加上同步标志. 解决是死循环. CopyOnWriteArrayList 代替ArrayList .
HashSet 和 HashMap的区别 public HashSet(){map=new HashMap<E,Object>()}