多线程顺序打印ABC
import java.util.concurrent.locks.ReentrantLock; public class AsynObject { private volatile int count; private ReentrantLock lock = new ReentrantLock(); public AsynObject(int count) { this.count = count; } public void printA() { print("A", 0); } public void printB() { print("B", 1); } public void printC() { print("C", 2); } private void print(String name, int a) { lock.lock(); try { if (count % 3 == a) { System.out.println(name); count++; Thread.sleep(100); } } catch (Exception ex) { } finally { lock.unlock(); } } }
public static void main(String[] args) { AsynObject asynObject = new AsynObject(3); Thread printThreadA = new Thread(() -> { while (true){ asynObject.printA(); } }); printThreadA.start(); Thread printThreadB = new Thread(() -> { while (true){ asynObject.printB(); } }); printThreadB.start(); Thread printThreadC = new Thread(() -> { while (true){ asynObject.printC(); } }); printThreadC.start(); }
收藏文章数量从多到少与“把书读薄”是一个道理
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步