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

广州网站优化关键词公司广州出台21条措施扶持餐饮住宿

广州网站优化关键词公司,广州出台21条措施扶持餐饮住宿,商城网站模块,免费的产品展示小程序一、wait()、notify()、notifyAll()用法obj.wait()/obj.wait(long timeout)是Object中的方法#xff0c;当线程调用wait()方法#xff0c;当前线程释放对象锁#xff0c;进入等待队列。obj.notify()/obj.nogifyAll()是Object中的方法#xff0c;唤醒在此对象上wait()的单个…一、wait()、notify()、notifyAll()用法obj.wait()/obj.wait(long timeout)是Object中的方法当线程调用wait()方法当前线程释放对象锁进入等待队列。obj.notify()/obj.nogifyAll()是Object中的方法唤醒在此对象上wait()的单个或者所有线程。测试代码public class ThreadWaitNotify {public static void main(String[] args) throws InterruptedException {//创建一个线程池ExecutorService executorService Executors.newCachedThreadPool();//创建DemoTest对象DemoTest demoTest new DemoTest();//用线程池创建线程异步执行waitTest方法executorService.submit(() - demoTest.waitTest());//用线程池创建线程异步执行notifyTest方法executorService.submit(() - demoTest.notifyTest());}//测试wait和notify测试demostatic class DemoTest {//唤醒线程public synchronized void notifyTest() {System.out.println(方法notifyTest开始执行了);notify();System.out.println(方法notifyTest执行结束了);}//执行wait操作将线程挂起注意必须结合synchronized使用public synchronized void waitTest() {System.out.println(方法waitTest开始执行了);try {wait();} catch (InterruptedException e) {e.printStackTrace();}System.out.println(方法waitTest执行结束了);}} }打印日志方法waitTest开始执行了 方法notifyTest开始执行了 方法notifyTest执行结束了 方法waitTest执行结束了从日志中我们可以看出waitTest方法阻塞直到被notifyTest唤醒二、await()、signal()、signalAll()用法java.util.concurrent类库中提供的Condition类来实现线程之间的协调。condition.await()/condition.await(long time, TimeUnit unit)通过condition调用当前线程释放对象锁。condition.signal()/condition.signalAll()通过signal或者signalAll方法唤醒await挂起的线程。测试代码public class ThreadAwaitSignal {public static void main(String[] args) {//创建一个线程池ExecutorService executorService Executors.newCachedThreadPool();//创建DemoTest对象DemoTest demoTest new DemoTest();//用线程池创建线程异步执行awaitTest方法executorService.submit(() - demoTest.awaitTest());//用线程池创建线程异步执行signalTest方法executorService.submit(() - demoTest.signalTest());}/*** 使用java.util.conncurrent类中提供了Condition类来实现线程之间的协调* 可以在Condition上调用await()方法使线程挂起* 其他线程调用signal()或者signalAll()来唤醒线程*/static class DemoTest {//定义一个Lock对象用来获取Condition对象private Lock lock new ReentrantLock();private Condition condition lock.newCondition();//唤醒线程public void signalTest() {lock.lock();try {System.out.println(方法signalTest开始执行了);condition.signalAll();System.out.println(方法signalTest执行结束了);} catch (Exception e) {e.printStackTrace();} finally {lock.unlock();}}//结合lock锁实现Condition的awaitpublic void awaitTest() {lock.lock();try {System.out.println(方法awaitTest开始执行了);condition.await();System.out.println(方法awaitTest执行结束了);} catch (InterruptedException e) {e.printStackTrace();} finally {lock.unlock();}}} }打印日志方法awaitTest开始执行了 方法signalTest开始执行了 方法signalTest执行结束了 方法awaitTest执行结束了从日志中国可以看出我们得到了和wait同样的效果。三 、yield()、join()用法Thread.yield()一定是当前线程调用此方法当前线程放弃获取CPU的时间片由运行态转变为就绪态让操作系统中再次选择线程执行。作用让相同优先级的线程轮流执行但并不能保证轮流执行根据解释我们了解到转成就绪态的的线程还有可能再次选中执行。Thread.yield()方法不会导致阻塞。t.join()/t.join(long millis)当前线程调用t2.join()方法当前线程阻塞但是不会释放对象锁直到t2线程执行完毕或者millis时间到则当前的线程恢复就绪状态。作用让优先级比较高的线程优先执行。yield测试代码 //yield放弃CPU时间片public static void yieldTest(){//定义一个线程Thread thread new Thread(() - {System.out.println(Thread.currentThread().getName() : 测试线程开始执行。。。);try {Thread.sleep(5000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() : 测试线程执行结束了。);});thread.start();System.out.println(Thread.currentThread().getName() : 执行yield方法);Thread.yield();System.out.println(Thread.currentThread().getName() : 主线程开始执行);}打印结果main: 执行yield方法 main: 主线程开始执行 Thread-0: 测试线程开始执行。。。 Thread-0: 测试线程执行结束了。可以看出虽然主线程调用了yield但是仍然又开始执行了因此但并不能保证轮流执行。join测试代码 //join抢占CPU时间片public static void joinTest() throws InterruptedException {//定义一个线程Thread thread new Thread(() - {System.out.println(Thread.currentThread().getName() : 测试线程开始执行。。。);try {Thread.sleep(5000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() : 测试线程执行结束了。);});thread.start();System.out.println(thread.getName() : 执行join方法);thread.join();System.out.println(Thread.currentThread().getName() : 主线程开始执行);}打印日志Thread-0: 执行join方法 Thread-0: 测试线程开始执行。。。 Thread-0: 测试线程执行结束了。 main: 主线程开始执行从日志中我们可以看出主线程在线程执行完成后才开始执行。四、wait()、await()、sleep()、yield、join对比通过表格对比join的情况下t1指代当前线程t2代表其他线程
http://www.huolong8.cn/news/218350/

相关文章:

  • 网站配置连凯分销平台
  • 银川专业做网站的公司17网站一起做网店图片工具
  • 山东省住房和城乡建设局网站个人网站设计论文摘要关键词
  • 建设银行青海省分行门户网站做地方网站要办什么证
  • 网站 面包屑直播网站建设
  • 外贸网站自建站做曖免费网站
  • 山西免费网站关键词优化排名西安网站制作模板
  • 国内做贵金属返佣比较多的网站品牌营销和品牌推广的区别
  • 装修公司做推广网站怎么弄做设计那些网站可以卖设计
  • 洛阳直播网站建设桂林论坛网
  • 搭建英文网站网站建设实训收获
  • 淘宝怎么才能发布网站建设中铁建设集团门户网登陆
  • 网站域名在哪里看抖音小程序定制开发
  • 公司网站年费婚恋网站建设需求文档
  • 西安网站seo费用沈阳做网站一诚金网络专业
  • 在百度做网站赚钱吗湖北省和住房建设厅官方网站
  • 免费个人网站源码php免费建设网站那个好
  • 中国在数码网站注册域名好 gt专门做考研的网站
  • 钢材销售都在哪个网站做织梦网站如何备份教程
  • 如何做拍卖网站中国建设项目招标网站
  • wordpress wp_parse_args()福州百度seo
  • 做公司网站需要会什么科目wordpress mylife
  • 室内装修设计网站推荐wordpress栏目修改
  • 深圳专业建设网站服务海口网站建设方案推广
  • 建设网站书商城网站怎么自己搭建
  • 做瞹网站最有效的15个营销方法
  • 网站开发需求用什么软件怎么给网站做防护
  • 哪些网站可以做淘宝基础销量企业免费网站建设模板下载
  • python学习网站福建老区建设网站
  • 龙岗网站优化培训网络营销推广公司有哪些