美文网首页
多线程相关

多线程相关

作者: 绝对熙俊 | 来源:发表于2018-12-07 18:15 被阅读0次

    多线程的特性

    原子性、可见性、有序性

    原子性

    即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。 

    解决方案:
    一般使用 synchronized 或者 Lock 这种加锁的方式解决多线程原子性问题。当另一个线程需要获取主内存中的某个变量去进行操作的时候,必须先获取锁,否知就需要等待其他线程将锁释放,再获取到锁之后再进行操作。这种情况就保证了另一个线程的操作已经完成,那么对于那一个线程而言,他的操作就是原子性的操作,在他操作期间,不会有其他线程对他加锁的数据进行更改。

    可见性

    当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。  

    解决方案:
    一般使用 volatile 解决多线程的可见性问题。 volatile 修饰的变量进行改变之后,将直接修改主内存而不是这个线程所的工作内存,并且通知其他工作内存该变量失效,逼迫其他内存也只能从主内存中获取这个变量。从而实现更新对其他线程可见。

    有序性

    程序执行的顺序按照代码的先后顺序执行。

    相关文章

      网友评论

          本文标题:多线程相关

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