public class ThreadTest { volatile int flag=0; public static void main(String[] args) throws InterruptedException { ThreadTest threadTest = new ThreadTest(); threadTest.runThread(); } public void runThread() throws InterruptedException{ Thread t1=new Thread(new Thread1()); Thread t2=new Thread(new Thread2()); t1.start(); t2.start(); } public class Thread1 implements Runnable{ public void run() { int i=1; while(i<=100){ if(flag==0) { System.out.println("线程1 " + i); i+=2; flag=1; } } } } public class Thread2 implements Runnable{ public void run() { int i=2; while(i<=100){ if(flag==1) { System.out.println("线程2 " + i); i+=2; flag=0; } } } } }
// 模仿大佬的 public class ThreadTest { int i =1; boolean firstDone = false; Object lock = new Object(); public static void main(String[] args) { ThreadTest t =new ThreadTest(); t.print(); } void print(){ Thread t1 = new Thread(new Runnable() { public void run() { for(;i<=100;) { synchronized (lock) { if(!firstDone) { System.out.println(Thread.currentThread().getName()); System.out.println(i++); firstDone = true; lock.notify(); } else{ try { lock.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } } } }); Thread t2 = new Thread(new Runnable() { public void run() { for(;i<=100;) { synchronized (lock) { if(firstDone) { System.out.println(Thread.currentThread().getName()); System.out.println(i++); firstDone = false; lock.notify(); } else { try { lock.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } } } }); t1.start(); t2.start(); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)