• Java变成思想--多线程


    Executor :线程池

    CatchedThreadPool:创建与所需数量相同的线程,在回收旧线程是停止创建新县城。

    FixedThreadPool:创建一定数量的线程,所有任务公用这些线程。

    SingleThreadPool:线程数量为1的FixedThreadPool,并且执行有序。

    如果需要得到线程返回值,要实现Callbale接口,submit方法执行,call方法返回返回值。

    方法:

    yield():你已经执行差不都了,把cpu让出来给其他线程去用

    setDaemon():设置为后台线程,尽量不要用,关闭不好控制。

    Java中递增不是原子性操作,不安全

    synchronized:

    同一个对象多个synchronized方法共享一个锁,

    一个任务可以获得多次对象锁,即一个synchronized方法调用给另一个synchronized方法,这时锁的次数是递增的。

    synchronized针对每个类也有一个锁

    原子性 、可视性 都是针对多任务,如果是一个任务则不需要

    volatile 保证原子性、可视性

     volatile 每次修改都会把结果写入主存,而读取都是读主存,保证可视性

    synchronized可以完全实现volatile 功能,最好使用synchronized

    sleep 当前线程放弃CPU,开始睡眠,在睡眠中不会释放锁。

    yield 当前线程放弃CPU,但不会释放锁,放弃cpu多久不知道。

    wait 这个线程会释放锁,进行对象的等待池。

  • 相关阅读:
    Snuke's Subway Trip
    codevs 1606 台阶
    COGS 2334. [HZOI 2016]最小函数值
    codevs 1052 地鼠游戏
    洛谷 P1091 合唱队形
    洛谷 P1376 机器工厂
    codevs 2618 核电站问题
    vijos 1524 最小监视代价
    洛谷 P1690 贪婪的Copy
    51nod 1135 原根
  • 原文地址:https://www.cnblogs.com/qull/p/9761614.html
Copyright © 2020-2023  润新知