奇数线程:7 偶数线程:8 奇数线程:9 偶数线程:10 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 4.结果分析: 通过创建两个线程,这两个线程共享object对象锁,当一个线程打印完一个数字后,会释放对象锁,另一个线程拿到对象锁,然后判断是否为偶数(奇数),满足条件则打印。 二.通过synchronized关键字配合wait和...
使用两个线程去分别打印奇数和偶数,分别为奇数线程和偶数线程。 原理一是两个线程去竞争syn锁。 原理二是使用wait和notify方法来执行这个任务。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 packagethreadcoreknowledge.thread...
publicclassWork2 {staticfinalObject object =newObject();publicstaticvoidmain(String[] args) { Thread t1=newThread(newRunnable() { @Overridepublicvoidrun() {synchronized(object) {for(inti = 1; i < 10; i += 2) { System.out.println(Thread.currentThread().getName()+ " " +i); object....
java面试中经常会遇到这个问题,如何用两个线程交替打印奇偶数。线程A打印1,线程B打印2,线程A打印3,线程B打印4...这个问题的解题思路是协调两个线程的执行时机,线程A与线程B需要交替执行。实现的方式很多,常用的方法是采用wait/notify方法。 本文记录了笔者解决这个问题的过程,并解释过程中遇到的坑以及如何填坑的,以...
两个线程交替打印输出数字,一个线程只打印偶数,另一个只打印奇数 这还不简单,直接用同步锁就可以解决,真的是这样吗? 撸起袖子就是干... synchronized 实现 publicclassTest01{privatestaticintcount;privatestaticfinalObjectlock=newObject();privatestaticfinalintnum=100;publicstaticvoidmain(String[]args){newThrea...
使用奇偶判断法实现两个线程交替打印奇偶数时,采用下面的代码,打印出来的结果是正确的: public class ThreadTest { private static int count = 0; public static void main(String[] args) { new Thread(() -&…
* 两个线程交替打印0-100的奇偶数, *用wait和notify实现 */publicclassWaitNotifyPrintOddEvenWait{// 1.拿到锁,就打印// 2.打印完,唤醒其它线程,自己休眠privatestaticintcount=0;privatestaticfinalObjectlock=newObject();staticclassTurningRunnerimplements Runnable{@Overridepublicvoidrun(){while(count<=100){...
实现一个类OddEven 有一个打印奇数的方法,有一个打印偶数的方法。 类中有一个volatile变量 ,用来控制当前状态是该哪个方法打印。 方法中打印每个数前首先判断volatile变量的状态,不该自己打印就使用Thread.yield()让出CPU,该自己就打印并调换状态。 在主函数中,两个线程共享一个OddEven实例,并调用打印奇数的方法或...