多线程笔记

++线程不安全叫非线程安全

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);//是否设为守护线程

上一篇:C++基础学习之模板类的语法


下一篇:2022 Spring梳理 3 组件的作用域 @Lookup的使用以及与@Autoware的区分