少年阿賓

          那些青春的歲月

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            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 閱讀(675) 評論(0)  編輯  收藏 所屬分類: JavaMultithread
          主站蜘蛛池模板: 常州市| 神农架林区| 集贤县| 堆龙德庆县| 东阿县| 南昌县| 江城| 平舆县| 隆德县| 邛崃市| 偏关县| 尼玛县| 屯门区| 句容市| 武义县| 潍坊市| 广昌县| 富阳市| 三门县| 怀柔区| 柳林县| 垣曲县| 阿图什市| 临武县| 内乡县| 衢州市| 湖口县| 中阳县| 武穴市| 青冈县| 甘泉县| 伊金霍洛旗| 漠河县| 周口市| 固原市| 木里| 阜阳市| 万州区| 彭阳县| 会宁县| 邹城市|