线程同步方法有几种_java线程同步和异步的区别

线程同步方法有几种_java线程同步和异步的区别线程同步的三种方式线程同步的三种方式1. 同步代码块。2. 同步方法。3. 锁机制。 同步代码块: synchronized 关键字可以用于方法中的某个区块中,表示只对这个区块的资源实行

线程同步的三种方式   线程同步的三种方式   1. 同步代码块。   2. 同步方法。   3. 锁机制。    同步代码块: synchronized 关键字可以用于方法中的某个区块中,表示只对这个区块的资源实行互斥访问。   synchronized(同步锁){         需要同步操作的代码   }   同步锁:   对象的同步锁只是一个概念,可以想象为在对象上标记了一个锁.   1. 锁对象 可以是任意类型。   2. 多个线程对象 要使用同一把锁。   /   * 同步代码块   */   public class Ticket implements Runnable {   private int ticket = 100;   Object lock=new Object();   @Override   public void run() {   while(true){   synchronized(lock){   if (ticket>0){   try {   Thread.sleep(500);   } catch (InterruptedException e) {   e.printStackTrace();   }   System.out.println(Thread.currentThread().getName()+” 正在卖:”+ticket–+”张票!”);   }   }   }   }   }   同步方法:使用synchronized修饰的方法,就叫做同步方法,保证A线程执行该方法的时候,其他线程只能在方法外 等着。   public synchronized void method(){       可能会产生线程安全问题的代码     }   /   * 同步方法   */   public class Ticket01 implements Runnable {   private int ticket = 100;   @Override   public void run() {   while(true){   sellTicket();   }   }   public synchronized void sellTicket(){   if (ticket>0){   try {   Thread.sleep(500);   } catch (InterruptedException e) {   e.printStackTrace();   }   System.out.println(Thread.currentThread().getName()+” 正在卖:”+ticket–+”张票!”);   }   }   }   对于非static方法,同步锁就是this。   对于static方法,我们使用当前方法所在类的字节码对象(类名.class)。   Lock锁机制:java.util.concurrent.locks.Lock 机制提供了比synchronized代码块和synchronized方法更广泛的锁定操作, 同步代码块/同步方法具有的功能Lock都有,   除此之外更强大,更体现面向对象。 Lock锁也称同步锁,加锁与释放锁方法化了,如下: public void lock() :加同步锁。 public void unlock() :释放同步锁   /   * Lock锁机制   */   public class Ticket02 implements Runnable {   private int ticket = 100;   Lock lock = new ReentrantLock();   @Override   public void run() {   while(true){   lock.lock();   if (ticket>0){   try {   Thread.sleep(500);   } catch (InterruptedException e) {   e.printStackTrace();   }   System.out.println(Thread.currentThread().getName()+” 正在卖:”+ticket–+”张票!”);   }   lock.unlock();   }   }   }    

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/70932.html

(0)
上一篇 2024年 8月 7日
下一篇 2024年 8月 7日

相关推荐

关注微信