1、实现多线程
1.1 进程和线程
1.2 线程实现方式
1.3 线程调度与控制
Java是抢占式调度模型。
线程优先级高只是说明它获取CPU的几率高,但并不是每次都可以保证其实际运行时优先运行。
1.4 多线程的实现方式
2、线程同步
2.1 案例:卖票
线程安全:当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替进行,并且在调用代码中不需要任何额外的同步或者协同,这个类都能表现出正确的行为,那么就称这个类为线程安全的。
2.2 同步代码块
2.3 同步方法
如果不需要线程安全的实现,建议使用ArrayList代替Vector。
HashTable实现了Map接口。如果不需要线程安全的实现,建议使用HashMap代替HashTable。
有的时候就算需要线程安全,也没有使用Vector。使用的是Collections.synchronizedList
方法。
2.4 Lock锁
一般结合try finally进行加锁和释放锁操作,如下:
2.5 生产者消费者案例
3、网络编程
3.1 概述
3.2 UDP通信程序
3.3 TCP通信程序
即发送一个输出结束的标记。服务器读到结束标记就不在readLine等待