//解决方案1:浪费(memory)空间法 static int a = 0; static int b = 0; static boolean c=false; static boolean d=false; public static void main(String[] args) throws InterruptedException { Demo04AboutThread2 Demo04AboutThread2 = new Demo04AboutThread2(); Thread thread1 = new Thread(new Runnable() { @Override public void run() { int temp1 = 0; for (int i = 0; i < 10000; i++) { a++; } c=true; } }); //匿名内部类 Thread thread2 = new Thread(new Runnable() { @Override public void run() { for (int i = 0; i < 10000; i++) { b++; } d=true; } }); thread1.start(); thread2.start(); //空轮询: 这里创建一个监听线程以监听消息 一有消息就进行回调 Thread thread3 = new Thread(()->{ //lambda表达式 函数编程风格 while (true){ if (c==true && d==true){ System.out.println(a+b); } } }); thread3.start(); }解释一下这段代码
时间: 2023-03-22 16:02:33 浏览: 91
这段代码中有两个静态变量 a 和 b,两个静态布尔变量 c 和 d。在 main 方法中创建了两个线程 thread1 和 thread2,thread1 在循环中给 a 加上 1,thread2 在循环中给 b 加上 1。当 thread1 和 thread2 都执行完后,将 c 和 d 设置为 true。
另外还有一个线程 thread3,它使用了 lambda 表达式创建。thread3 线程会不断循环,当 c 和 d 都为 true 时退出循环。
这段代码的作用是在多线程的环境下对两个变量进行累加操作,最后使用线程来监听 c 和 d 的值,当 c 和 d 都为 true 时退出循环。
阅读全文