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

网站后台页面进不去做外贸的有些什么网站

网站后台页面进不去,做外贸的有些什么网站,北京手机建站模板,企业建设网站的母的目录 1. Lock机制:明锁控制 2. 栅栏机制(CyclicBarrier) 3. 闭锁机制(CountDownLatch) 4. 信号量机制(Semaphore) 5. 无锁机制 1. Lock机制:明锁控制 Lock接口提供了比synchronized更灵活的锁机制,属于明锁(需要手动获取和释…

目录

1. Lock机制:明锁控制

2. 栅栏机制(CyclicBarrier)

3. 闭锁机制(CountDownLatch)

4. 信号量机制(Semaphore)

5. 无锁机制


1. Lock机制:明锁控制

        Lock接口提供了比synchronized更灵活的锁机制,属于明锁(需要手动获取和释放锁)。与synchronized隐式锁不同,Lock需要显式地调用lock()和unlock()方法。

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;public class LockDemo {private Lock lock = new ReentrantLock();private int count = 0;public void increment() {lock.lock();  // 手动获取锁try {count++;} finally {lock.unlock();  // 必须在finally中手动释放锁}}
}

2. 栅栏机制(CyclicBarrier)

        栅栏机制允许一组线程相互等待,直到所有线程都到达某个屏障点,然后所有线程才会继续执行。CyclicBarrier可以重复使用,适用于分阶段的任务处理。

package com.demo5;import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;/*** * 研学,旅游公司包车,一个车做4个同学,坐满就发车; 总共有28个人,怎么控制和实现?**/public class Test {public static void main(String[] args) {// 设置屏障点CyclicBarrier cb = new CyclicBarrier(4, () -> {System.out.println("已经有4个同学了,就发车吧, 旅游车已经启动出发");});for (int i = 0; i < 28; i++) {Runnable r = () -> {System.out.println("学生来报道............");try {cb.await();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (BrokenBarrierException e) {// TODO Auto-generated catch blocke.printStackTrace();}};try {Thread.sleep(3000);} catch (InterruptedException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}new Thread(r).start();}}}

运行结果:

3. 闭锁机制(CountDownLatch)

        闭锁是一种一次性使用的同步辅助工具,允许一个或多个线程等待其他线程完成操作。

package com.demo8;import java.util.concurrent.CountDownLatch;public class Test {public static void main(String[] args) {//闭锁,任务只能执行一次CountDownLatch cdl   = new CountDownLatch(10);//10个人到了,一桌人开始吃饭,吃完就结束。for(int i=0;i<10;i++){Runnable  r = ()->{System.out.println(Thread.currentThread().getName()+",来吃饭.....");cdl.countDown();//-1,一直到0};try {Thread.sleep(2000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}new Thread(r).start();}try {cdl.await(); // 等待计数器归零,屏障点解除} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("我们开始欢乐的用餐");}}

运行结果:

4. 信号量机制(Semaphore)

        信号量用于控制同时访问特定资源的线程数量,通过许可证机制实现资源池的访问控制。

package com.demo9;import java.util.Random;
import java.util.concurrent.Semaphore;public class Test {public static void main(String[] args) {Semaphore  s  = new Semaphore(3);   // 允许3个线程同时访问for(int i=0;i<6;i++){Runnable  r = ()->{try {s.acquire();  // 获取许可System.out.println(Thread.currentThread().getName()+", 抢优惠劵");Thread.sleep(new Random().nextInt(20)*1000);System.out.println(Thread.currentThread().getName()+", 离开现场");} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{s.release();  // 释放许可}};new Thread(r).start();}}}

运行结果:

5. 无锁机制

        无锁编程通过CAS(Compare And Swap)操作实现线程安全,避免了锁的开销。Java中的Atomic类就是无锁机制的典型实现。

package com.demo3;import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicInteger;public class Test {// 原子锁,就是无锁private  static  AtomicInteger  count  = new AtomicInteger(0);public static void inc() {try {Thread.sleep(1);// 毫秒count.getAndIncrement();//count加1// TimeUnit.MILLISECONDS.sleep(1);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static void main(String[] args) {CountDownLatch cd = new CountDownLatch(100);for (int i = 0; i < 100; i++) {Runnable r = () -> {Test.inc();cd.countDown();};new Thread(r).start();}try {cd.await();System.out.println("总和为:" + Test.count);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

运行结果:

http://www.dtcms.com/a/471150.html

相关文章:

  • 学校网站功能python购物网站开发流程
  • 大数据成矿预测系列(四) | 成矿预测的“主力军”:随机森林与支持向量机深度解析
  • 企业网站优化费用iis 网站后台
  • 工业可视化监控平台GENESIS64核心能力与架构解析
  • 网站建设公司位置广东做网站的公司有哪些
  • 石家庄科技网站建设ppt制作平台
  • 如何自建网站做淘客常州网站专业制作
  • 纯分享!2026届计算机毕业设计选题全攻略(选题+技术栈+创新点+避坑),这80个题目覆盖所有方向,计算机毕设选题大全收藏
  • 网安面试题收集(2)
  • 西宁建设网站运维兼职平台
  • Java--网络编程(一)
  • 购物网站建设教程中国十大网站建设公司排名
  • web后端开发——原理
  • 如何把网站放在根目录300m空间够用吗 wordpress
  • 上海高端网站公司哪家好网站意识形态建设
  • 软件设计师-计算机网络-IP地址
  • 5000人网站开发交通建设集团网站
  • 谁分享一个免费网站2021discuz论坛门户网站模板
  • 从入门到精通【Redis】初识Redis集群(Cluster)
  • IDF 定时器
  • 怎么做网站引流做网站服务器需要自己提供吗
  • 烟台市牟平区建设局网站石家庄今天最新新闻头条
  • 天津市做网站的公司有哪些ppt模板免费下载完整版免费网站
  • “数据化学习者”的存在论阐释:量化自我对学习主体性的形塑与异化
  • UG NX二次开发(Python)-tag_t转换为int
  • HOW - 如何使用 bundle-analyzer 工具优化包体积
  • 手机站建设o2o商城网站系统开发
  • 国产三维CAD皇冠CAD(CrownCAD)在「汽车零部件」建模教程:发动机零件
  • 中国网站的建设无锡企业做网站
  • systemd-journald和rsyslogd日志配置详解