线程安全,同步锁(同步方法和同步代码)

1.线程安全(Synchronized线程锁):处理线程的两种方式:1.同步代码块2.同步锁
2.同步代码块:的锁对象可以是任意对象:程序中存在多个线程时要设置线程锁才能保证线程安全
3.同步方法:锁的对象可以是this,因为this代表的是本类的意思,也是对象的一种.
4.设置同步锁:同步代码块:public class Tick implements Runnable(){ 编译抢票程序:private int tick;//线程对象共享的变量要放在类中定义不然定义在方法里面就成了每个线 程都有的变量,如:每个线程都有100张票而不是一共有100张票 Object obj=new Object();线程锁的对象必须放在类中定义不然每个线程都有一把锁就锁不住线程对象了
public void run(){ while(true)加上同步(Synchronized(obj) {{if(tick>0){加上睡眠能让效果更明显(睡100毫秒):Thread.sleep(100)system.out.println (Thread.currentThread().getName()+"售出 第"+ticket--+"张票")}}}
5.同步方法:public class tick implements Runnable(){ private int tick=100; while(true){save();}}
public Synchronized void save(){ if(tick>0){System.out.println(Thread.currentThread().getName()+"售出第"+ticket--+"张票");}}\
把同步锁方法写在Runnable的实现类里面再调用同步锁方法就行了
6.Lock多线程锁:private int tick=0; 创建lock锁:Lock l=new ReentrantLock(); 循环取票:while(true){l.lock();if(tick>0){system.out.println(Thtread.currentThread ().getName()+"出售第"+tick--+"张票"} 关闭锁资源:l.unclock}

猜你喜欢

转载自www.cnblogs.com/hankai2735/p/11481880.html