线程同步方式二——同步方法

package com.yanan.java1;

/**
 * Created by zhangyanana    on 2017/3/1.
 */
//方式二 : 同步方法
/*           1、对于非静态类:
         即此方法为同步方法将操作共享数据的方法生命为synchronized.即此方法为同步方法, 能够保证当其中一个线程执行此方法时,其他线程在外等待直至执行完此方法 同步方法的锁:this(当前对象),如果用继承Thread的方式,慎用同步方法。

        2、对于静态类:如果使用同步,默认的锁为:当前类本身。以单例懒汉式为例。Class class=Singleton.class;
          
*/ class Window4 implements Runnable { //共享数据ticket 和 obj对象 int ticket = 100; Object obj = new Object(); public void run() { while (true) { show(); } } //把方法声明为同步的 public synchronized void show() { if (ticket > 0) { try { Thread.currentThread().sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + ":" + ticket--); } } } public class TestWindow4 { public static void main(String[] args) { Window4 w = new Window4(); //各个线程共享同一个对象w1 Thread t1 = new Thread(w); Thread t2 = new Thread(w); Thread t3 = new Thread(w); t1.start(); t2.start(); t3.start(); } }
原文地址:https://www.cnblogs.com/zhyn-BeHard/p/6497444.html