今天看了一点java多线程的东西,学习了两个关键字。
第一个是 synchronized,字面上是同步的意思,用来修饰代码块,成员函数或者类。它的主要作用是保证多个线程情况下,只有一个线程可以执行当前的代码,确保线程操作的原子性,从而保证了线程安全。
第二个关键字是volatile,字面上看是灵活的,易变化的。它通常用来修饰变量,作用是当前的变量如果进行了赋值操作,则将该变量的更新直接同步到内存中而不是仅仅是当前线程的cache中。同时也会通知其他线程的cache中该变量地址无效,需要从内存中读取。这个背后的硬件机制保证了变量的变化对其他线程透明可见,符合多线程可见性的要求,某些场景下保证了线程安全。
了解了这两个关键字只是冰山一角,多线程的概念需要在实践中慢慢积累和加深理解。