本文旨在兩個線程交替運行,不多嗶嗶直接看代碼吧 該實現的原理也非常簡單,定義一個對象,因為一個對象有且只有一個鎖,所以讓兩個線程迴圈讓此對象解鎖->加鎖,從而達到線程交替運行的目的; 個人覺得此方法還不夠好,後續總結了再繼續補充,還望看到的大佬們多指點指點! ...
本文旨在兩個線程交替運行,不多嗶嗶直接看代碼吧
public class Work2 { static final Object object = new Object(); public static void main(String[] args) { Thread t1 = new Thread(new Runnable() { @Override public void run() { synchronized (object) { for (int i = 1; i < 10; i += 2) { System.out.println(Thread.currentThread().getName() + " " + i); object.notify(); try { object.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } } }, "t1"); Thread t2 = new Thread(new Runnable() { @Override public void run() { synchronized (object) { for (int i = 2; i < 10; i += 2) { System.out.println(Thread.currentThread().getName() + " " + i); object.notify(); try { object.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } } }, "t2"); t1.start(); t2.start(); } }
該實現的原理也非常簡單,定義一個對象,因為一個對象有且只有一個鎖,所以讓兩個線程迴圈讓此對象解鎖->加鎖,從而達到線程交替運行的目的;
個人覺得此方法還不夠好,後續總結了再繼續補充,還望看到的大佬們多指點指點!