zoukankan      html  css  js  c++  java
  • 线程安全,同步锁(同步方法和同步代码)

    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}

  • 相关阅读:
    实验5&期中考试后两题
    实验四——再探类
    实验3—初识类
    10.29算法训练——poj1475双重BFS
    10.25算法训练——裸线段树
    探索邻接表
    Hadoop学习之Combiner
    关于VLM模式下linux压缩根目录空间的心得
    C#微信公众号开发系列教程四(接收普通消息)
    c#分部类型详解
  • 原文地址:https://www.cnblogs.com/hankai2735/p/11481880.html
Copyright © 2011-2022 走看看