1,BIO NIO(netty) AIO
2,多线程
1)概述以及应用场景
2)线程的状态(线程的生命周期)
3)实现方式(4) juc
1.继承Thread类,重写run(); void
2.实现Runnable接口 重写run(); void
3.实现Callable接口 重写call();带返回值,返回值类型和泛型保持一致
4.线程池 实现Callable接口 重写call();
进程:应用程序 软件
线程:进程内的
创建 ===> 就绪 》 运行》 死亡
| |
| |
—————阻塞
5.运行----》挂起(阻塞)
sleep()自动解锁
join() :等待线程结束(不结束一直等待);
yield():把当前线程挂起,等其他线程完事,再执行
wait();挂起(阻塞)----》运行:唤醒 notify()方法或 notifyAll()
i/o
6.挂起(阻塞)----》运行
interrupt()
7. sleep() 和 wait() 有什么区别?
8. 类: Thread类 Object类
9. 唤醒方式: interrupt() notify()方法或 notifyAll()
10. 解锁: 能 不能
11. 锁 安全,提高效率
一、synchronized
1.可以锁方法
2.还可以去锁一个代码块 synchronized(放一个对象){你的代码
二、Lock 相比 synchronized 更灵活
1.Lock 你想在哪加锁就在哪加锁,想在哪解锁就在哪解锁(可以跨方法,类)
三、读写锁:保证数据安全的情况下,提供效率
读锁:可以有读锁 不能有写锁 ?
写锁:不能有其他锁 ?如何实现(一会有时间看看)
死锁:编写一个哲学家就餐问题的模拟程序(要求解决死锁的问题);