@RunWith(SpringJUnit4ClassRunner.class) public class ThreadTest { private Object lock = new Object(); private AtomicInteger a = new AtomicInteger(0); @Test public void tu() { new Thread(new lock(lock,a),"偶数").start(); try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } new Thread(new lock(lock,a),"奇数").start(); } } class lock implements Runnable{ private Object lock = null; private AtomicInteger a; public lock(Object lock,AtomicInteger a) { this.lock = lock; this.a = a; } @Override public void run() { while (a.intValue() <= 100) { synchronized (lock) { System.out.println(Thread.currentThread().getName()+":"+ a.intValue()); a.addAndGet(1); lock.notifyAll(); try { if (a.intValue() <= 100) { lock.wait(); } }catch (InterruptedException e) { e.printStackTrace(); } } } } }
两个线程一个打印偶数一个打印奇数直到等于100时停止
最新推荐文章于 2023-12-15 16:00:38 发布
本文介绍了一个使用Java进行并发编程的示例,通过两个线程交替打印奇数和偶数到100的过程,展示了synchronized关键字、wait和notifyAll方法的使用。此示例有助于理解线程同步和原子操作的概念。
2713

被折叠的 条评论
为什么被折叠?



