J2SE(10)之多线程(线程安全)
1、线程安全 在多线程系统中,当多个线程共享同一份资源时,会出现线程不安全的情况。我们可以使用关键字synchronized加锁来解决线程不安全的问题。 1.1 同步方法 在方法上加上synchronized关键字,普通同步方法默认的锁对象是当前对象this,对于静态同步方法,锁是当前类的Class对象。 public synchronized void test2(){ //方法体 } 1.2 同步方法块 用关键字synchronized修饰可能存在线程不安全的代码块,锁对象是我们指定的引用类型的对象,基本类型不能作为锁。 synchronized(锁对象){ //可能存在线程不安全的代码 } 1.3 以售票讲解线程同步 public class SynDemo01 { /** * @param args */ public static void main(String[] args) { //真实角色 Web12306 web= new Web12306(); //代理 Thread t1 =new Thread(web,"路人甲"); Thread t2 =new Thread(web,"黄牛已"); Thread t3 =new Thread(web,"攻城师"); //启动线程 t1.start(); t2.start(); t3.start(); } } /** *