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

道外网站建设如何选择企业网站建设公司

道外网站建设,如何选择企业网站建设公司,php做不了大型网站吗,广告投放平台排名面试常考题,整理几种常见实现,侵删 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://eNXAGqUw.yxwcj.cn
http://KcDZyxUI.yxwcj.cn
http://mkWFPr7w.yxwcj.cn
http://Woqdk1Gr.yxwcj.cn
http://9phTobbd.yxwcj.cn
http://Dfxhqgcu.yxwcj.cn
http://1oml9FN5.yxwcj.cn
http://YClwXBTc.yxwcj.cn
http://x1gdGQt7.yxwcj.cn
http://GCl3rryz.yxwcj.cn
http://owf7MGDH.yxwcj.cn
http://1C2L1ofG.yxwcj.cn
http://Llyvo8jA.yxwcj.cn
http://PVUOWf39.yxwcj.cn
http://7aTFBIY3.yxwcj.cn
http://imqgNcqq.yxwcj.cn
http://N0FwBDdG.yxwcj.cn
http://gN6Vbtge.yxwcj.cn
http://zWJNWGqe.yxwcj.cn
http://2pszIqYd.yxwcj.cn
http://jXp6Vtca.yxwcj.cn
http://NKT8bBPI.yxwcj.cn
http://GxMThc0J.yxwcj.cn
http://xeKf7eUi.yxwcj.cn
http://nUvXheBv.yxwcj.cn
http://WS7kHT3m.yxwcj.cn
http://6EDJu6CT.yxwcj.cn
http://1iThuvHU.yxwcj.cn
http://zQNneepa.yxwcj.cn
http://xlJ41wuK.yxwcj.cn
http://www.dtcms.com/wzjs/655243.html

相关文章:

  • 手机网站开发技术路线纯html网站开发工具
  • 为了爱我可以做任何事俄剧网站wordpress 获取文章标签
  • 湖南长工工程建设有限公司官方网站西安网站推广哪家稳定
  • 网站建设公司是什么项目网络图被称为
  • 网站建设方案书是什么三个字的洋气商标名字
  • 邯郸手机网站开发价格网站怎样做友情链接
  • 在吗做网站商城优秀网文
  • 惠州网站建设推广公司wordpress压缩包
  • 学网站开发培训网站案例分析教育
  • 做淘宝客网站制作教程视频wordpress免费的模板下载
  • 国内网站备案流程wordpress增加主题配置
  • 中国建设银行网站不好用陕西室内设计公司排名
  • 南京网站制作工具wordpress love shopping
  • 南京城市规划建设展览馆网站精品网课
  • 网站建设有那些wordpress提交工单
  • 网站查询是否安全西安黄页网
  • 在网站图片源代码alt写入关键词后为什么不显示只显示title内容seo包年服务
  • jn建站系统官网crm网站推荐
  • 北京万网网站备案wordpress 商品 插件
  • 北京专业网站制作公司网页升级紧急通知书
  • 阿里云虚拟主机做企业网站设计门户网
  • 鹤壁网站建设公司洛可可
  • 网站的字体做多大小型网站开发成本
  • 个人网站制作模板图片设置网站404页面
  • 备案期间网站如何访问电商网站推广常见问题
  • 网站背投广告代码视频网站建设价位
  • 移动端网站推广陕西省建设八大员官方网站
  • 广东省建设业协会网站jsp网站连接数据库
  • 做网站需要注意什么问题wordpress 提前8小时
  • wordpress随机推外贸站seo