少年阿賓

          那些青春的歲月

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks
          //實例一,這里面用到了信號量Semaphore和FutureTask

          package net.abin.lee.mythread.callable;

          import java.util.concurrent.Callable;
          import java.util.concurrent.Semaphore;
          import java.util.concurrent.locks.Lock;
          import java.util.concurrent.locks.ReentrantReadWriteLock;

          public class FutureGo implements Callable<String> {
           private String message;
           private static final Semaphore semaphore=new Semaphore(3);
           private final ReentrantReadWriteLock rwl=new ReentrantReadWriteLock();
           public FutureGo(String message) {
            this.message = message;
           }

           public String call() throws InterruptedException {
            semaphore.acquire();
            Lock read=rwl.readLock();
            Lock write=rwl.readLock();
            read.lock();  
            System.out.println("message"+message+",Name"+Thread.currentThread().getName()+"進來了");
            read.unlock();
            write.lock();
            String result=message+"你好!";
            Thread.sleep(1000);
            System.out.println("message"+message+"Name"+Thread.currentThread().getName()+"離開了");
            write.unlock();
            semaphore.release();
            return result;
           }
          }



          //FutureTaskTest.java

          package net.abin.lee.mythread.callable;

          import java.util.concurrent.Callable;
          import java.util.concurrent.ExecutionException;
          import java.util.concurrent.ExecutorService;
          import java.util.concurrent.Executors;
          import java.util.concurrent.FutureTask;

          public class FutureTaskTest {
           public static void main(String[] args) throws InterruptedException,
             ExecutionException {
            Callable<String> go = new FutureGo("abin");
            FutureTask<String> task = new FutureTask<String>(go);
            ExecutorService executor = Executors.newCachedThreadPool();
            if (!executor.isShutdown()) {
             executor.execute(task);
            }
            String result = "";
            if (!task.isDone()) {
             result = (String) task.get();
             System.out.println("result=" + result);
            }
             executor.shutdown();
           }

          }






          //實例一,這里面用到了信號量Semaphore和FutureTask

          posted on 2013-01-10 14:17 abin 閱讀(670) 評論(0)  編輯  收藏 所屬分類: JavaMultithread
          主站蜘蛛池模板: 元朗区| 讷河市| 德清县| 海盐县| 定南县| 墨江| 泌阳县| 库车县| 京山县| 二连浩特市| 化德县| 肇庆市| 思南县| 盐亭县| 房山区| 界首市| 南靖县| 株洲县| 平度市| 邹平县| 长兴县| 霍州市| 古交市| 灵台县| 枣阳市| 吉林省| 西盟| 枝江市| 外汇| 兴宁市| 滦南县| 浦县| 中超| 缙云县| 长寿区| 云林县| 西城区| 浦江县| 安溪县| 政和县| 郓城县|