多线程的三大特性是什么原理,多线程的三大特性是什么三个

  多线程的三大特性是什么原理,多线程的三大特性是什么三个

  多线程有三个特点,即:

  原子性、可见性和有序性

  1、什么是原子性

  也就是说,一个或多个操作要么全部执行并且执行过程不会被任何因素中断,要么不执行任何操作。

  一个经典的例子是银行转帐的问题:

  比如从账户A转账1000元到账户B,必须包含两个操作:从账户A减去1000元,再加1000元到账户B,这两个操作必须是原子的,才能保证不会出现意外问题。

  我们的运营数据也是如此,比如I=I 1;包括读取I的值,计算I,写I,这一行代码在Java中不是原子的,多线程肯定会出问题,所以我们还需要使用同步和锁来保证这个特性。

  (视频教程推荐:java视频)

  2、什么是可见性

  当多个线程访问同一个变量时,一个线程修改这个变量的值,其他线程可以立即看到修改后的值。

  如果两个线程在不同的CPU中,那么线程1改变了I的值但没有刷新到主存,线程2再次使用I,那么这个I的值一定还是之前的那个。线程1看不到线程2对变量的修改。这就是能见度问题。

  3、什么是有序性

  程序执行的顺序遵循代码的顺序。

  一般来说,为了提高程序的运行效率,处理器可能会对输入代码进行优化。它不保证程序中每条语句的执行顺序与代码中的一致,但会保证程序最终的执行结果与代码顺序一致。如下所示:

  int a=10//语句1

  int r=2;//语句2

  a=a 3;//语句3

  r=a * a//语句4,因为重新排序,也可能按照2-1-3-4,1-3-2-4的顺序执行,但绝对不会按照2-1-4-3的顺序执行,因为这样会打破依赖关系。

  很明显,重排序在单线程运行时不会有任何问题,但多线程运行就不一定了,所以我们在多线程编程时就不得不考虑这个问题。

  推荐教程:java入门。以上是多线程的三大特性是什么的详细介绍。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: