Java多线程中,如何使用线程关键字(2)进行更精细的控制?

2026-05-27 20:540阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1375个文字,预计阅读时间需要6分钟。

Java多线程中,如何使用线程关键字(2)进行更精细的控制?

您好,我是王炸,这是我的51CTO博客,欢迎您再来。Java中和线程相关的关键字主要有两个:volatile和synchronized。volatile用得较少,以后会更少(后面解释)。它是非原子性的,也就是说,它不能保证一个操作在执行过程中不被中断。synchronized则用于保证操作的原子性,即一个线程在执行synchronized代码块时,其他线程无法访问该代码块。

您好,我是湘王,这是我的51CTO博客,欢迎您来,欢迎您再来~

Java中和线程相关的关键字就两:volatile和synchronized。

volatile以前用得较少,以后会用得更少(后面解释)。它是一种非常轻量级的同步机制,它的三大特性是:

1、保证可见性,即强制将CPU高速缓存的数据立即写入主存,会导致其他CPU核中对应的高速缓存内容无效,就像这样:

Java多线程中,如何使用线程关键字(2)进行更精细的控制?


如果由于同步需要,某行代码使用了volatile关键字,那么当CPU内核1收到指令时,会立即将它位于高速缓存中的数据(这里是字符串“1”)写到主存中去,那么其余的数据(“哈哈”、“test”、9.9)会全部失效。


2、有序性(禁止指令重排)

所谓指令重排,就是对于int a = 0、 int b = 1这类赋值语句,编译成class字节码时,a = 0,b = 1的顺序可能会因为编译器的优化而导致和书写时的顺序不一致。

阅读全文

本文共计1375个文字,预计阅读时间需要6分钟。

Java多线程中,如何使用线程关键字(2)进行更精细的控制?

您好,我是王炸,这是我的51CTO博客,欢迎您再来。Java中和线程相关的关键字主要有两个:volatile和synchronized。volatile用得较少,以后会更少(后面解释)。它是非原子性的,也就是说,它不能保证一个操作在执行过程中不被中断。synchronized则用于保证操作的原子性,即一个线程在执行synchronized代码块时,其他线程无法访问该代码块。

您好,我是湘王,这是我的51CTO博客,欢迎您来,欢迎您再来~

Java中和线程相关的关键字就两:volatile和synchronized。

volatile以前用得较少,以后会用得更少(后面解释)。它是一种非常轻量级的同步机制,它的三大特性是:

1、保证可见性,即强制将CPU高速缓存的数据立即写入主存,会导致其他CPU核中对应的高速缓存内容无效,就像这样:

Java多线程中,如何使用线程关键字(2)进行更精细的控制?


如果由于同步需要,某行代码使用了volatile关键字,那么当CPU内核1收到指令时,会立即将它位于高速缓存中的数据(这里是字符串“1”)写到主存中去,那么其余的数据(“哈哈”、“test”、9.9)会全部失效。


2、有序性(禁止指令重排)

所谓指令重排,就是对于int a = 0、 int b = 1这类赋值语句,编译成class字节码时,a = 0,b = 1的顺序可能会因为编译器的优化而导致和书写时的顺序不一致。

阅读全文