1.使用Java多线程协同打印1到n
题目要求如下:
对给定整型n, 开启n个线程(编号分别为1到n)。
线程的工作逻辑为:编号为x的线程只能打印整数x,
实现代码逻辑,使得n个线程协同工作按顺序打印自然数列:1, 2, 3, ..., n。
思路:多个线程自旋等待是否任务轮到自己了。
public class ThreadDemo {
//当前正在执行任务,全局可见
public static volatile char now;
public static void main(String[] args) {
//输入任务
char[] input = {'1','2','3','4','5'};
//每个线程要执行任务数
final int n = 1;
for (int j = 0; j < input.length; j++) {
final int t = j;
//开启线程任务
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < n; i++) {
//循环等待,自旋