java线程同步入门例子

    xiaoxiao2021-12-14  22

    使用同一个对象锁+synchronized实现线程同步

    class RunnableCase2 implements Runnable{ public void run() { synchronized (this) { try { System.out.println(Thread.currentThread().getId()+"-start"); Thread.sleep(5000); System.out.println(Thread.currentThread().getId()+"-end"); } catch (InterruptedException e) { e.printStackTrace(); } } } }

    测试

    RunnableCase2 r2 = new RunnableCase2(); Thread t1 = new Thread(r2); Thread t2 = new Thread(r2); t1.start(); t2.start();

    输出

    9-start 9-end 10-start 10-end

    ----------------------------------------------------------

    以下不能实现线程同步,因为不是用的同一个对象锁

    class ThreadCase2 extends Thread{ public void run(){ synchronized(this){ try { System.out.println(Thread.currentThread().getId()+"-start"); Thread.sleep(5000); System.out.println(Thread.currentThread().getId()+"-end"); } catch (InterruptedException e) { e.printStackTrace(); } } } }

    ThreadCase2 t1 = new ThreadCase2(); ThreadCase2 t2 = new ThreadCase2(); t1.start(); t2.start();

    转载请注明原文地址: https://ju.6miu.com/read-970837.html

    最新回复(0)