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

在家做的网站编辑长沙县 网站建设

在家做的网站编辑,长沙县 网站建设,微官网系统架构,设计网站如何推广背景 有三个线程#xff0c;每个线程分别循环输出A、B、C#xff0c;各线程循环10次#xff0c;要求输出结果是ABCABCABC这样的 代码 Data public class PrintThread extends Thread {private String string; // 输出的字符串private int order; …背景 有三个线程每个线程分别循环输出A、B、C各线程循环10次要求输出结果是ABCABCABC这样的 代码 Data public class PrintThread extends Thread {private String string; // 输出的字符串private int order; // 输出的顺序private static Object lock; // 静态锁对象private static volatile int index 0; // 共享的索引变量public PrintThread(String string, int order, Object lock) {this.string string;this.order order;this.lock lock;}Overridepublic void run() {for (int i 0; i 10; i) {synchronized (lock) { // 使用锁对象进行同步while (index % 3 ! order) { // 判断是否轮到当前线程输出try {lock.wait(); // 如果不是轮到当前线程输出则释放锁并等待} catch (InterruptedException e) {e.printStackTrace();}}try {Thread.sleep(10); // 模拟输出过程的耗时操作} catch (InterruptedException e) {e.printStackTrace();}index; // 修改索引变量表示下一个线程可以输出了System.out.println(string); // 输出字符串lock.notifyAll(); // 唤醒其他等待的线程}}}public static void main(String[] args) {try {Object lock new Object(); // 创建锁对象PrintThread threadA new PrintThread(A, 0, lock); // 创建线程APrintThread threadB new PrintThread(B, 1, lock); // 创建线程BPrintThread threadC new PrintThread(C, 2, lock); // 创建线程CthreadA.start(); // 启动线程AthreadB.start(); // 启动线程BthreadC.start(); // 启动线程C} catch (Exception e) {e.printStackTrace();}} } 最后 实际会有这样的场景吗下面举几个例子 1、假设在一个食堂有很多人在排队打饭每个人需要完成以下步骤先拿餐具然后拿菜再拿饭最后付钱。 2、多线程下载器。当我们下载一个大文件时可以使用多个线程同时从不同的服务器上下载文件的不同部分然后将这些部分合并成一个完整的文件。通过多个线程交替遍历不同的服务器可以提高下载速度加快文件的下载过程。 3、医院的门诊、机场的登机口、超市的收银台等等。 扩展 除了waitnotifyAll还有其他的实现方式 使用CountDownLatchCountDownLatch是一个同步辅助类可以用于控制一个或多个线程等待其他线程完成操作。它通过一个计数器来实现线程调用await()方法等待计数器变为0而其他线程调用countDown()方法来减少计数器的值。当计数器变为0时等待的线程将被唤醒。 使用CyclicBarrierCyclicBarrier也是一个同步辅助类可以用于多个线程之间的同步。它和CountDownLatch类似都是通过计数器来实现线程的等待和唤醒。不同之处在于CyclicBarrier的计数器可以重复使用当计数器减为0时所有等待的线程都会被唤醒并且计数器会被重置为初始值。 使用SemaphoreSemaphore是一个计数信号量可以用来控制同时访问某个资源的线程个数。它维护了一个许可证的计数器线程可以通过acquire()方法获取许可证如果计数器大于0线程可以继续执行如果计数器为0线程将被阻塞。线程在使用完资源后需要调用release()方法释放许可证使得其他线程可以继续访问资源。 使用Lock和ConditionLock是一个可重入的互斥锁可以用来替代synchronized关键字实现线程的同步。Condition是与Lock相关联的条件对象可以用来实现线程的等待和唤醒。线程可以通过调用await()方法等待条件满足而其他线程可以通过调用signal()或signalAll()方法来唤醒等待的线程。
http://www.yayakq.cn/news/5659/

相关文章:

  • php 做网站 pythonseo的内容主要有哪些方面
  • 辽阳太子河网站建设石家庄市建设局质监站网站
  • 网站建设公司的工资wordpress登录小工具
  • 合肥网站建设方案维护手机百度下载免费安装
  • 上海网站建设中小型企业免费网站技术
  • 太原网站的公司做网站建设的公司排名
  • 网站建设 电脑 手机关键词优化费用
  • 加强网站功能建设桂林两江四湖图片
  • 建立手机个人网站域名可以做网站名吗
  • 自助免费建站创新型的福州网站建设
  • 网站建网站建设如何建设局域网内部网站
  • 做网站的基本要求网站采用哪种开发语言
  • 如何做一个与博物馆相关网站北京今天又出现一例
  • 烟台城乡建设住建局网站杭州seo优化公司
  • 网站栏目 英文企业门户网站建设情况
  • 网站做下载word北京网站制作工具
  • 昆明网站搭建公司网站怎么做下载功能
  • 模板建站是什么意思建站资源免费
  • php网站开发指导教材 文献腾冲市住房和城乡建设局网站
  • 有哪些网站能够免费找到素材wordpress文档内容页
  • 深圳平湖网站建设公司中国最大型网站
  • 怎么用网网站模板做网站百度网址大全怎么设为主页
  • 建设网站的价值引流推广平台有哪些
  • 在静安正规的设计公司网站免费网站模板下载
  • 如何提高你的网站的粘性网络营销模式下品牌推广研究论文
  • 接外包网站沈阳大型网站建设
  • 网站设计常用软件ios个人开发者账号
  • 众创空间文化建设网站酒店建设网站的优势有哪些
  • 网站做nat映射需要哪些端口公司企业邮箱怎么开通注册
  • 网站怎样制作合肥城建