当前位置: 首页 > news >正文

怎么建立购物网站怎么在百度上做广告

怎么建立购物网站,怎么在百度上做广告,海南营销型网站建设,php网站源码模板文章目录 1.存在的问题2.使用同步解决问题1) synchronized2) volatile3) 锁 总结 用多线程过程中#xff0c;有可能出现 多个线程同时处理#xff08;获取或修改等#xff09;同一个数据#xff0c;这个时候就 会发生数据不同步的问题#xff0c; 因此出现了同步和锁来… 文章目录 1.存在的问题2.使用同步解决问题1) synchronized2) volatile3) 锁 总结 用多线程过程中有可能出现 多个线程同时处理获取或修改等同一个数据这个时候就 会发生数据不同步的问题 因此出现了同步和锁来保证多个线程可以安全的处理同一个数据。 1.存在的问题 例如火车售票窗口售票假如我们有 2 个窗口相当于开启了 2 个线程同时卖 10 张票 两个窗口的操作流程都如下 1购票者到窗口 2窗口访问票匣子获取余票数量 3票匣子返回余票数量 4售票窗口判断若存在票大于 0 则卖给他 那么假如票匣子就剩下 1 张票啦但是不巧的是两个窗口同时查看余票数量都发现还有 1 张票**又都卖给了购票者……**这就是多线程存在的数据不同步问题_ 示例代码 public class Demo {public static void main(String[] args) throws InterruptedException {ThreadDemo threadDemo new ThreadDemo();new Thread(threadDemo,售票窗口1).start();new Thread(threadDemo,售票窗口2).start();} }class ThreadDemo implements Runnable {private int ticketCount 10;Overridepublic void run() {String tName Thread.currentThread().getName();while (true) {if (ticketCount 0) {return;}try {Thread.sleep(200);System.out.println(tName 成功卖了一张票余票: (ticketCount-- - 1));} catch (InterruptedException e) {throw new RuntimeException(e);}}} }输出结果 售票窗口1成功卖了一张票余票:9 售票窗口2成功卖了一张票余票:8 售票窗口1成功卖了一张票余票:7 售票窗口2成功卖了一张票余票:6 售票窗口2成功卖了一张票余票:5 售票窗口1成功卖了一张票余票:4 售票窗口2成功卖了一张票余票:3 售票窗口1成功卖了一张票余票:2 售票窗口1成功卖了一张票余票:1 售票窗口2成功卖了一张票余票:0 售票窗口1成功卖了一张票余票:-1 2.使用同步解决问题 同步Synchronization 是一种协调多个线程执行的机制它能够确保在同一时刻只有一个线程访问共享资源。主要通过关键字 synchronized 和 volatile 以及 锁对象 等手段来实现同步。 1) synchronized 关键字 synchronized 用于修饰方法或代码块保证在同一时刻只有一个线程能够执行被 synchronized 修饰的代码。以下是两种使用方式 修饰方法 public synchronized void test() {// 同步的代码块 }修饰代码块 public void someMethod() {// 非同步的代码块synchronized (lockObject) {// 同步的代码块}// 非同步的代码块 }2) volatile 关键字 volatile 用于声明变量保证变量的可见性。被 volatile 修饰的变量对所有线程可见当一个线程修改了这个变量的值其他线程能够立即看到修改后的值。 public class Demo {private volatile int ticketCount 10; }3) 锁 Java 提供了很多种锁常用的有 synchronized 关键字、ReentrantLock 及 Read/Write Lock 等 。 ReentrantLock 它支持可重入锁允许一个线程多次获取同一把锁。 import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock;public class Demo {private final Lock lock new ReentrantLock();public void test() {lock.lock();try {// 同步的代码块} finally {lock.unlock();}} }ReentrantLock 提供了比 synchronized 更丰富的功能如可中断锁、公平锁、定时锁等 Read/Write Lock ReadWriteLock 接口定义了读写锁它包含两个锁一个用于读操作一个用于写操作。读写锁允许多个线程同时读取共享资源但只允许一个线程进行写操作。ReentrantReadWriteLock 是 ReadWriteLock 的一个实现类 import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock;public class Demo {private final ReadWriteLock readWriteLock new ReentrantReadWriteLock();public void read() {readWriteLock.readLock().lock();try {// 读取共享资源的操作} finally {readWriteLock.readLock().unlock();}}public void write() {readWriteLock.writeLock().lock();try {// 修改共享资源的操作} finally {readWriteLock.writeLock().unlock();}} }读写锁适用于读操作远远多于写操作的场景可以提高并发性 StampedLock 它是一种读写锁的变种提供了乐观读锁可以在读多写少的场景中提供更好的性能 import java.util.concurrent.locks.StampedLock;public class Demo {private final StampedLock stampedLock new StampedLock();public void read() {long stamp stampedLock.tryOptimisticRead();// 乐观读操作if (!stampedLock.validate(stamp)) {// 有写操作发生转为悲观读stamp stampedLock.readLock();try {// 悲观读操作} finally {stampedLock.unlockRead(stamp);}}}public void write() {long stamp stampedLock.writeLock();try {// 写操作} finally {stampedLock.unlockWrite(stamp);}} }StampedLock 提供了更细粒度的控制并允许在不同的代码路径中执行不同的操作 总结 在多线程编程中确保线程安全是至关重要的通过合理使用 synchronized 关键字、volatile 关键字以及 ReentrantLock 等锁机制可以有效地保护共享资源避免数据不一致和竞态条件等问题。合理的同步机制不仅能够提高程序的性能还能够确保程序的正确性。在实际开发中根据具体场景选择合适的同步和锁机制是编写高效、安全多线程代码的关键。
http://www.hkea.cn/news/14589941/

相关文章:

  • 无锡嘉饰茂建设网站有什么网站可以做深圳初二的试卷练习
  • 中国建设银行北京分行门户网站公告pi币最新消息
  • 菏泽做网站建设找哪家太和网站建设
  • wordpress怎么设置语言设置中文抖音seo优化软件
  • 宝安设备网站设计修改wordpress的首页
  • 天津网站建设招标网页微信版登陆看不到聊天记录吗
  • 青之峰网站建设网站建设延期报告
  • 如何创建自己公司网站代码外包平台
  • 会小二也是做会议网站的如何免费建设自己稳定的网站
  • 营销网站的渠道构成基本包括wordpress文章分页共多少页
  • 要怎么才能建设一个网站北京建网站公司怎么样
  • 兰州网站建设兰州wordpress没有权限
  • 绵阳做手机网站广州市番禺区建设局网站
  • 网站建设服设计一个外贸网站需要多少钱
  • 90设计网站几次是什么意思微商管理系统
  • 专业做冻货的网站太原网站建设方案开发
  • 做免费嗳暧视频网站dw怎么做网站地图
  • 网站文章更新怎么做登陆网站取消备案
  • 网站开发手机app焦作建设厅网站
  • 做网站全是别人的链接有了网站 怎么做排名优化
  • 网站建设那种语言好做暧暧网站在线观看
  • 网站建设书本网页翻译软件哪个好用
  • 网站建设的需求是什么意思印尼请人做网站
  • 广东制冷设备网站建设费用小网站代码
  • 一个网站多个域名重定向怎么做工会网站建设策划书
  • 网页设计及网站建设在线作业为什么浙江建设厅网站
  • 贵阳网站建设q479185700惠从搜索引擎访问网站
  • 网站术语网站播放大视频如何做
  • 网站开发所需硬件北京市工程建设交易中心网站
  • 360网站排名怎么做上海松江建设工程开发有限公司网站