JAVA基礎(2) -- 兩個執行緒輪流列印1-100
阿新 • • 發佈:2018-12-26
思路:宣告一個全域性變數int i = 1;然後將這個變數鎖定,執行緒輪流訪問這個變數,並列印即可。
程式碼如下:
package cn.taneroom.test; public class ThreadTest implements Runnable{ int i = 1; public static void main(String[] args) { ThreadTest t = new ThreadTest(); Thread t1 = new Thread(t); Thread t2 = new Thread(t); t1.setName("執行緒1"); t2.setName("執行緒2"); t1.start();t2.start(); } public void run() { while (true) { synchronized (this) { // 先喚醒另外一個執行緒 notify(); try { Thread.currentThread(); Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } if (i <= 100) { System.out.println(Thread.currentThread().getName() + ":"+ i); i++; try { // 列印完之後,釋放資源,等待下次被喚醒 wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } } } }