去故就新 Java线程新同步机制

发表于:2011-11-29 10:07

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:yuyiming1986    来源:51Testing软件测试网采编

分享:

  (3)测试代码:

  • import java.util.concurrent.locks.Condition; 
  • import java.util.concurrent.locks.Lock; 
  • import java.util.concurrent.locks.ReentrantLock; 
  • class GlobalV{ 
  •     public final static Lock locker = new ReentrantLock(); 
  •     public final static Condition cond = locker.newCondition(); 
  •     public static boolean to_proceed = false
  • class Response extends Thread{ 
  •     public void run(){ 
  •         while(true){ 
  •             GlobalV.locker.lock(); 
  •             try
  •                 while(!GlobalV.to_proceed){ 
  •                     GlobalV.cond.await(); 
  •                 } 
  • System.out.println("Response:finish a job"); 
  •                 GlobalV.to_proceed = false
  •                  
  •             }catch(Exception e){ 
  •                 e.printStackTrace(); 
  •             }finally
  •                 GlobalV.locker.unlock(); 
  •             }    
  •         } 
  •     } 
  • class Request extends Thread{ 
  •     public void run(){ 
  •         while(true){ 
  •             GlobalV.locker.lock();   
  •             try
  •                 GlobalV.to_proceed = true
  •                 GlobalV.cond.signalAll(); 
  •                 System.out.println("Request:send a job to Response");    
  •             }finally
  •                 GlobalV.locker.unlock(); 
  •             } 
  •             try { 
  •                 Thread.sleep(2000); 
  •             } catch (InterruptedException e) { 
  •                 e.printStackTrace(); 
  •             } 
  •         } 
  •     } 
  • public class Test6 { 
  •     public static void main(String[] args) { 
  •         Request req = new Request(); 
  •         Response res = new Response(); 
  •         req.start(); 
  •         res.start(); 
  •     } 
  • }
  •   输出:

    Request:send a job to Response
    Response:finish a job
    Request:send a job to Response
    Response:finish a job
    Request:send a job to Response
    Response:finish a job
    Request:send a job to Response
    Response:finish a job

    53/5<12345>
    《2023软件测试行业现状调查报告》独家发布~

    关注51Testing

    联系我们

    快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

    法律顾问:上海兰迪律师事务所 项棋律师
    版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
    投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

    沪ICP备05003035号

    沪公网安备 31010102002173号