70 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
```
 | 
						||
 | 
						||
import java.util.concurrent.atomic.AtomicInteger;
 | 
						||
 | 
						||
public class AlternatePrint {
 | 
						||
    // 使用原子整数作为共享变量,初始值为1表示轮到线程1打印第一个数字
 | 
						||
    private static AtomicInteger turn = new AtomicInteger(1);
 | 
						||
    // 当前要打印的数字
 | 
						||
    private static int currentNumber = 1;
 | 
						||
    // 定义终止条件
 | 
						||
    private static final int MAX_NUMBER = 100;
 | 
						||
    
 | 
						||
    public static void main(String[] args) {
 | 
						||
        // 创建两个线程
 | 
						||
        Thread thread1 = new Thread(() -> {
 | 
						||
            while (currentNumber <= MAX_NUMBER) {
 | 
						||
                // 线程1检查是否轮到自己
 | 
						||
                if (turn.get() == 1) {
 | 
						||
                    System.out.println("线程1: " + currentNumber);
 | 
						||
                    // 切换到线程2
 | 
						||
                    turn.set(2);
 | 
						||
                }
 | 
						||
                // 短暂休眠以避免CPU过度使用
 | 
						||
                try {
 | 
						||
                    Thread.sleep(10);
 | 
						||
                } catch (InterruptedException e) {
 | 
						||
                    Thread.currentThread().interrupt();
 | 
						||
                    return;
 | 
						||
                }
 | 
						||
            }
 | 
						||
        });
 | 
						||
        
 | 
						||
        Thread thread2 = new Thread(() -> {
 | 
						||
            while (currentNumber <= MAX_NUMBER) {
 | 
						||
                // 线程2检查是否轮到自己
 | 
						||
                if (turn.get() == 2) {
 | 
						||
                    System.out.println("线程2: " + currentNumber);
 | 
						||
                    // 增加当前数字
 | 
						||
                    currentNumber++;
 | 
						||
                    // 切换回线程1
 | 
						||
                    turn.set(1);
 | 
						||
                }
 | 
						||
                // 短暂休眠
 | 
						||
                try {
 | 
						||
                    Thread.sleep(10);
 | 
						||
                } catch (InterruptedException e) {
 | 
						||
                    Thread.currentThread().interrupt();
 | 
						||
                    return;
 | 
						||
                }
 | 
						||
            }
 | 
						||
        });
 | 
						||
        
 | 
						||
        // 启动线程
 | 
						||
        thread1.start();
 | 
						||
        thread2.start();
 | 
						||
        
 | 
						||
        // 等待线程结束
 | 
						||
        try {
 | 
						||
            thread1.join();
 | 
						||
            thread2.join();
 | 
						||
        } catch (InterruptedException e) {
 | 
						||
            Thread.currentThread().interrupt();
 | 
						||
        }
 | 
						||
        
 | 
						||
        System.out.println("所有数字打印完毕");
 | 
						||
    }
 | 
						||
}
 | 
						||
 | 
						||
 | 
						||
``` |