美文网首页
Java的并发

Java的并发

作者: bangbang2 | 来源:发表于2022-01-10 14:28 被阅读0次

    Java的内存模型-JMM

    线程A先将变量从共享内存保存到本地内存(可以是寄存器),修改后,再写入到共享内存中。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成数据的不一致。

    image.png
    为了解决这个问题,我们用volatile关键字(1:防止指令重排序 (2:保证变量的可见性
    修改后的变量值会直接主内存,不走本地内存
    image.png
    image.png
    简单来说:volatile是去保证可见性,synchronized是保证原子性,volatile只能去修饰变量
    image.png

    线程池

    创建若干线程放在一个池中,如果有任务来了,会将任务放在任务队列中,线程去执行,处理完线程不会被释放,会重新回到线程池
    线程池的好处
    1:创建线程是比较消耗资源的
    2:任务不用线程的创建
    3:提高线程的可管理性

    Runnable和Callable的区别

    Callable会返回结果或者抛出异常,而Runnable不会


    image.png

    线程池的饱和策略

    AbortPolicy--直接拒绝策略,默认
    CallerRunsPolicy--提交任务的线程去执行任务
    DiscardPolicy---直接丢弃任务
    DiscardOldestPolicy---丢弃最老的任务

    Mysql的主从复制

    主要是去记这个图的原理


    image.png

    了解三大日志

    redo log是和innoDB有关,binlog是和Server有关


    image.png
    redo log

    redo log-记录的是某一数据页,修改了哪些内容


    image.png

    看该图就能明白redo的工作原理


    image.png
    binlog

    记录事务的MySQL的逻辑语句


    image.png
    undolog
    image.png image.png
    image.png
    image.png

    相关文章

      网友评论

          本文标题:Java的并发

          本文链接:https://www.haomeiwen.com/subject/vdmmcrtx.html