阿里非典型程序员一枚 ,记录平平无奇程序员在大厂的打怪升级之路。 一起学习Java、大数据、数据结构算法(公众号同名)
题目
在多个线程中循环打印特定字符并保持顺序的三种方法
在Java多线程编程中,有时候我们需要多个线程按照特定的顺序执行某些任务,比如循环打印特定的字符。这通常要求线程间进行协调,以确保任务按照预期的顺序执行。下面我们将介绍三种实现这一功能的方法。
在多个线程中循环打印特定字符并保持顺序的三种方法
在Java多线程编程中,有时候我们需要多个线程按照特定的顺序执行某些任务,比如循环打印特定的字符。这通常要求线程间进行协调,以确保任务按照预期的顺序执行。下面我们将介绍三种实现这一功能的方法。
方法一:synchronized(配合volatile关键字)
volatile关键字可以确保多线程环境中变量的可见性,但它并不保证原子性。因此,在使用volatile时,我们需要结合其他同步机制来实现顺序控制。
public class VolatilePrinting {
private volatile int currentThreadIndex = 0;
private final int numThreads = 3;
private final char[] chars = {
'A', 'B', 'C'};
public static void main(String[] args) {
VolatilePrinting volatilePrinting = new VolatilePrinting();
Thread[] threads = new Thread[volatilePrinting.numThreads];
for (int i = 0; i < volatilePrinting.numThreads; i++) {
final int threadIndex = i;
threads[i] = new Thread(() -> {
while (true) {
synchronized (volatilePrinting) {
while (volatilePrinting.currentThreadIndex % volatilePrinting.numThreads != threadIndex) {
try {
volatilePrinting.wait();
} catch (InterruptedException e) {
Thread.currentThread().