同步方法包括两种用法:synchronized方法和synchronized方法块
同步方法:public synchronized void method(int args){ }
synchronized方法控制对“对象”的访问,每个对象对应一把锁,每个synchronized方法都必须获得调用该方法的对象的锁才能执行,否则线程会阻塞,方法一旦执行就独占该锁,直到该方法返回才能释放锁,后面阻塞的线程才能获得这个锁,继续执行
缺点:一个大的方法申明为synchronized将会影响效率
synchronized实例:
package com.keji.oop;
//多线程操作同一个对象
//买火车票
//发现问题,当多个线程操作同一个资源,线程不安全,数据容易紊乱
public class ThreadDemo implements Runnable {
private int ticket = 10;
boolean flag = true;//外部停止方式
@Override