当前位置: 首页 > 网络应用技术

同步和并发三个特征

时间:2023-03-08 17:41:33 网络应用技术

  原子性是指未中断的操作,必须完成,否则将无法执行。

  该线程是CPU调度的基本单元。CPU的概念具有时间胶片的概念,该概念将根据不同的调度算法安排线程。当线程获得时间膜时,将执行它,并在执行之后。时间片精疲力尽,CPU使用权将被丢失。因此,在多线程的情况下,由于时间胶片之间的旋转,将出现原子问题。

  在Java中,为了确保原子性,提供了两个高级字节码说明。与Java中这两个字节相对应的相应关键字。

  通过说明,只能同时通过一个线程访问修改的代码。在锁定锁定之前,无法通过其他线程访问它。因此,可以在Java中使用它以确保操作和代码块是原子质的。

  当线程1执行指令时,监视器将被锁定,锁定后不能锁定其他线程,除非线程1主动解锁。即使在执行过程中,由于某些原因,例如CPU时间平板电脑,线程1抛弃了CPU,但是他没有解锁。因为重新输入了锁,下一次胶卷只能由他自己获得,或者将继续执行代码。直到执行所有代码。

  可见意味着,当多个线程访问相同的变量时,线程会修改该变量的值,而其他线程可以立即看到修改后的值。

  Java内存模型指定所有变量都存储在主内存中,并且每个线程也都有其自己的工作内存。所有操作都必须在工作内存中执行,并且不能直接读取和写入主内存。不同的线程无法直接访问变量在对手的工作记忆中。线程之间变量的传输需要数据在其自身的工作内存和主内存之间同步。因此,可能存在某个变量的值,但是线程2不可见的情况。

  修改后的代码将在执行开始时锁定,并且在执行完成后将执行解锁。在确保可见性的顺序后,有一个规则:在解锁变量之前,必须将此变量同步到主存款解锁后,后续线程可以访问修改后的值。

  因此,可见同步关键字锁的值。

  即有序的顺序,即按照代码的顺序执行程序执行顺序。

  除了引入时间膜外,由于处理器的优化和指令,CPU还可以执行输入代码的顺序执行,例如要优化。这是可以订购的。

  这里应该指出的是,不能禁止指令进行重新安排和处理器优化。换句话说,无法避免上述问题。

  那么,为什么还要提供有序的保证呢?

  这将扩大有序的概念。可以将Java程序中的自然顺序总结为句子:如果在此线程中观察到,所有操作都自然是有序的。如果您在一个线程中观察到另一个线程,则所有操作都是无序的。

  上面的句子也是“更深入理解Java虚拟机”中的原始句子,但是您如何理解?没有详细的解释。我将在这里简要介绍它,实际上与之相关。

  语义意思是:无论如何对其进行排序(编译器和处理器以改进并行),都无法更改单个线程程序的执行结果。不管编译器和处理器如何优化编译器,编译器都必须遵循语义。

  这里不是详细的。简而言之,单个线程中存在一定的限制,并且指令中存在某些限制。只要编译器和处理器符合此语义,您就可以认为按顺序执行单个线程程序。重新安排干扰。

  因此,由于修改了代码,只能在同一时间之前在同一时间访问。然后由单个线程执行。因此,它可以确保其订单。