常见三种使用方式
1)普通同步方法,锁是当前实例;
2)静态同步方法,锁是当前类的Class实例,Class数据存在永久代中,是该类的一个全局锁;
3)对于同步代码块,锁是synchronized括号里配置的对象。
方式一 普通方法通过synchronized修饰
1)不采用synchronized 当创建两个线程对象 线程t1 t2中采用同一个实例化类对象 调用method方法 会交异步执行 互补影响
package cn.ac.bcc.sync; /** * 普通同步方法通过synchronized修饰 * @author Administrator * */ public class PtMethod { /** * 1)不采用synchronized修饰 * @param s */ public void method(String s){ if(s.equals("a")){ System.out.println(Thread.currentThread().getName()+": a"); try { Thread.sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } }else{ System.out.println(Thread.currentThread().getName()+": b"); } } public static void main(String[] args) { //创建当前类对象实例 final PtMethod ptMethod = new PtMethod(); //创建线程 Thread t1 = new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub ptMethod.method("a"); } }); Thread t2 = new Thread(new Runnable(){ @Override public void run() { // TODO Auto-generated method stub ptMethod.method("b"); } }); t1.start(); t2.start(); } }