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

施工企业工作环境seo搜索优化 指数

施工企业工作环境,seo搜索优化 指数,球赛投注网站开发,800多块做网站面试常考题,整理几种常见实现,侵删 1. 使用wait()和notify() public class PrintABCUsingWaitNotify {/*** 实现步骤:* 定义一个共享对象用来同步。* 使用wait()让线程进入等待状态。* 使用notify()唤醒下一个线程。*/private final Object…

面试常考题,整理几种常见实现,侵删

1. 使用wait()和notify()
public class PrintABCUsingWaitNotify {/*** 实现步骤:* 定义一个共享对象用来同步。* 使用wait()让线程进入等待状态。* 使用notify()唤醒下一个线程。*/private final Object lock = new Object();private int state = 0;  // 0:A 1:B 2:C@Testpublic void testPrintABC() {PrintABCUsingWaitNotify task = new PrintABCUsingWaitNotify();Thread threadA = new Thread(task::printA);Thread threadB = new Thread(task::printB);Thread threadC = new Thread(task::printC);threadA.start();threadB.start();threadC.start();}public void printA() {synchronized (lock) {for (int i = 0; i < 10; i++) {while (state != 0) {try {lock.wait();} catch (InterruptedException e) {e.printStackTrace();}}System.out.print("A");state = 1;lock.notifyAll();}}}public void printB() {synchronized (lock) {for (int i = 0; i < 10; i++) {while (state != 1) {try {lock.wait();} catch (InterruptedException e) {e.printStackTrace();}}System.out.print("B");state = 2;lock.notifyAll();}}}public void printC() {synchronized (lock) {for (int i = 0; i < 10; i++) {while (state != 2) {try {lock.wait();} catch (InterruptedException e) {e.printStackTrace();}}System.out.print("C");state = 0;lock.notifyAll();}}}}
2. 使用ReentrantLock和Condition
public class PrintABCUsingReentrantLock {/*** 实现步骤* 定义一个ReentrantLock和多个Condition。* 每个线程等待相应的Condition,当符合条件时打印字符并唤醒下一个线程。*/private final Lock lock = new ReentrantLock();private final Condition conditionA = lock.newCondition();private final Condition conditionB = lock.newCondition();private final Condition conditionC = lock.newCondition();private int state = 0;  // 0:A 1:B 2:C@Testpublic void testPrintABC() throws InterruptedException {PrintABCUsingReentrantLock task = new PrintABCUsingReentrantLock();Thread threadA = new Thread(task::printA);Thread threadB = new Thread(task::printB);Thread threadC = new Thread(task::printC);threadA.start();threadB.start();threadC.start();}public void printA() {lock.lock();try {for (int i = 0; i < 10; i++) {while (state != 0) {conditionA.await();}System.out.print("A");state = 1;conditionB.signal();}} catch (InterruptedException e) {e.printStackTrace();} finally {lock.unlock();}}public void printB() {lock.lock();try {for (int i = 0; i < 10; i++) {while (state != 1) {conditionB.await();}System.out.print("B");state = 2;conditionC.signal();}} catch (InterruptedException e) {e.printStackTrace();} finally {lock.unlock();}}public void printC() {lock.lock();try {for (int i = 0; i < 10; i++) {while (state != 2) {conditionC.await();}System.out.print("C");state = 0;conditionA.signal();}} catch (InterruptedException e) {e.printStackTrace();} finally {lock.unlock();}}}
3. ReentrantLock和Condition的另一种写法
public class SyncPrinter implements Runnable {private final int PRINT_COUNT = 10;private final ReentrantLock reentrantLock;private final Condition thisCondition;private final Condition nextCondition;private final char printChar;public SyncPrinter(ReentrantLock reentrantLock, Condition thisCondition, Condition nextCondition, char printChar) {this.reentrantLock = reentrantLock;this.thisCondition = thisCondition;this.nextCondition = nextCondition;this.printChar = printChar;}@Overridepublic void run() {reentrantLock.lock();try {for (int i = 0; i < PRINT_COUNT; i++) {System.out.println(printChar);nextCondition.signal();if (i < PRINT_COUNT - 1) {try {thisCondition.await();} catch (InterruptedException e) {e.printStackTrace();}}}} finally {reentrantLock.unlock();}}public static void main(String[] args) throws InterruptedException {ReentrantLock lock = new ReentrantLock();Condition conditionA = lock.newCondition();Condition conditionB = lock.newCondition();Condition conditionC = lock.newCondition();Thread printA = new Thread(new SyncPrinter(lock, conditionA, conditionB, 'A'));Thread printB = new Thread(new SyncPrinter(lock, conditionB, conditionC, 'B'));Thread printC = new Thread(new SyncPrinter(lock, conditionC, conditionA, 'C'));printA.start();Thread.sleep(100);printB.start();Thread.sleep(100);printC.start();}}
4. 使用信号量Semaphore
public class PrintABCUsingSemaphore {/*** 实现步骤* 定义三个信号量semA、semB、semC。* 每个线程在自己的信号量上等待,打印完成后释放下一个线程的信号量。*/private final Semaphore semA = new Semaphore(1);private final Semaphore semB = new Semaphore(0);private final Semaphore semC = new Semaphore(0);@Testpublic void testPrintABC() throws InterruptedException {PrintABCUsingSemaphore task = new PrintABCUsingSemaphore();Thread threadA = new Thread(task::printA);Thread threadB = new Thread(task::printB);Thread threadC = new Thread(task::printC);threadA.start();threadB.start();threadC.start();}public void printA() {try {for (int i = 0; i < 10; i++) {semA.acquire();System.out.print("A");semB.release();}} catch (InterruptedException e) {e.printStackTrace();}}public void printB() {try {for (int i = 0; i < 10; i++) {semB.acquire();System.out.print("B");semC.release();}} catch (InterruptedException e) {e.printStackTrace();}}public void printC() {try {for (int i = 0; i < 10; i++) {semC.acquire();System.out.print("C");semA.release();}} catch (InterruptedException e) {e.printStackTrace();}}}
http://www.dtcms.com/wzjs/97887.html

相关文章:

  • wordpress做视频网站吗友情链接发布网
  • 上海网站建设天锐科技排名优化哪家专业
  • 赣州网站建设需要多少钱今天宣布疫情最新消息
  • 武汉一医院网站建设seo网站优化推广
  • 企业文化建设的重要性seo关键字优化价格
  • 莱芜网站设计公司近期重大新闻事件10条
  • 内蒙古高等级公路建设开发有限责任公司网站淘宝seo什么意思
  • 网页设计实训报告格式重庆seo职位
  • 南京网站制作系统百度seo教程网
  • 营销crm系统网站设计线上推广渠道有哪些方式
  • wordpress怎么改图片seo分析案例
  • 做网站用哪个软件如何免费注册网站平台
  • 网站关键词优化怎么做淘宝标题优化网站
  • 注册网站在哪里创建广州今日头条新闻最新
  • 品牌故事浙江seo公司
  • 营销策划公司取名大全北京seo优化技术
  • 小米商城的网站建站外贸营销型网站制作
  • 成都网站推广经理2022百度指数排名
  • 手机app开发网站建设百度流量推广项目
  • 唯美网站建设北京网站优化seo
  • 有什么网站可以接单做兼职的跨国网站浏览器
  • 呼和浩特城乡建设委员会的网站知名网络营销推广
  • 那里有做像美团的网站的搜索引擎排名大全
  • 做网站的公司不会设计网站创建公司
  • 做剧情游戏的网站搜多多搜索引擎入口
  • wordpress文章点赞安卓优化大师下载安装到手机
  • 三里屯做网站的公司快速网络推广
  • 关方网站买微信互联网营销推广渠道
  • 个人建交友网站磁力岛
  • 安徽工程建设信息网站进皖企业重庆关键词优化平台