1. 程式人生 > >Java兩個線程實現交替運行-以交替打印奇偶數為例

Java兩個線程實現交替運行-以交替打印奇偶數為例

getname rac interrupt 分享圖片 override int new dex obj

本文旨在兩個線程交替運行,不多嗶嗶直接看代碼吧

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(); } }

技術分享圖片

該實現的原理也非常簡單,定義一個對象,因為一個對象有且只有一個鎖,所以讓兩個線程循環讓此對象解鎖->加鎖,從而達到線程交替運行的目的;

個人覺得此方法還不夠好,後續總結了再繼續補充,還望看到的大佬們多指點指點!

Java兩個線程實現交替運行-以交替打印奇偶數為例