++线程不安全叫非线程安全
1、多线程的概念
进程 -- 线程(进程的最小单元)
目的:高并发;提高效率
2、多线程的实现(4个,实际上就1个Runnable)
1)继承Thread类
2)实现Runnable接口 有返回值
3)实现Callable接口 没有返回值
4)线程池
3、多线程的生命周期
创建线程--->就绪(.start())--->运行--->死亡
new Thread | |
| |sleep/IO/wait
| |
----------挂起(休眠)
时间/流读取完成/notify(唤醒)
4、生产消费者模型:
currentThread():获取当前线程
5、锁:synchronized Lock 死锁(非锁)
synchronized锁:
wait(等待) notify(唤醒)
sleep:线程休眠不释放锁,暂停,等待时间唤醒
wait:线程休眠释放锁,死亡,notify唤醒,可以有多个,一定执行一次,需要在synchronized中
Lock锁:
Lock lock = new ReentrantLock();
lock.lock();
lock.unlock();
死锁(非锁):
解决办法:休眠
ConcurrentHashMap():HashMap加锁,分段锁
Tread中的常用方法
Person p1 = new Person("KN");
Person p2 = new Person("SDF");
p1.join();//等待主线程执行完后,执行
p1.setPriority(10);//更改优先级为10级
p2.setDaemon(true);//是否设为守护线程