用Lambda表达式解决面试题java两种线程,一个线程打印 1~52,另一个线程打印字母A-Z,打印顺序为12A34B56C……5152Z。

来源:互联网 发布:软件测试行业多少年 编辑:程序博客网 时间:2024/06/05 08:33
package com.atguigu.test;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;class ShareData {private char a ='A';private Lock lock = new ReentrantLock();private Condition condition = lock.newCondition();public void getNum(){lock.lock();try {for(int i=1;i<=52;i++){System.out.print(i);if(i%2 == 0){condition.await();}condition.signalAll();}} catch (Exception e) {}finally{lock.unlock();}}public void getD(){lock.lock();try {for(int i=1;i<=26;i++){System.out.print(a++);condition.signalAll();condition.await();}} catch (Exception e) {}finally{lock.unlock();}}}public class Arrange {public static void main(String[] args) {ShareData s =new ShareData();new Thread(() -> {s.getNum();},"num").start();new Thread(() -> {s.getD();},"D").start();}}

阅读全文
1 0
原创粉丝点击