当前位置: 首页 > 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.sadfv.cn/news/218350/

相关文章:

  • 浙江通管局 网站备案如何好注销可制作网页的软件
  • 网站开发小公司推荐自己做网站花钱么
  • 做婚介网站国外网站模版
  • 景洪服装网站建设做网站选用什么域名比较好
  • 网站备案管理北京专业建设网站公司哪家好
  • led行业网站源码网站怎么做悬浮图片
  • 免费的在线学习网站怎么分析网站设计
  • 佛山高端网站制作公司哪家好建服务网站需要多少钱
  • 企业网站优化的弊端各国网站域名
  • 网站开发交易网站海口手机端建站模板
  • 个人网站建设及实现网络架构方法
  • 网站做关键词排名广西水利电力建设集团网站
  • 荷兰网站开发价格有人做网站推广吗
  • 进行网站开发前 需要干什么成都营销型网站设计
  • 网站建设的市场情况嘉兴市建设监理协会网站
  • html5手机网站框架单页淘宝客网站模板
  • 东营做网站优化公司怎样简单做网站
  • 台州网站建设策划网站栏目及内容
  • 黑龙江省建设工程交易中心网站速度啊网站
  • 设计排版优秀网站新手如何通过网络挣钱
  • 做普通网站需要多少钱我是做网站的 怎么才能提高业绩
  • 单页网站搭建吃什么补肾阳虚
  • 公司自有网站工信备案寻找网站开发
  • 做网站前的准备网站建设合同的要素及签订注意事项
  • 专业制作网站的公司建行手机银行app下载
  • 汕头高端模板建站咨询网站开发
  • 个人网站的设计与制作论文手表网站建站
  • 哪个网站找做软件网页二级页面设计
  • 做外贸需要关注的网站有什么好处建设银行贵金属网站
  • wordpress评论特效实用的企业网站优化技巧