java學(xué)習(xí)

          java學(xué)習(xí)

           

          java future 線程模式

          public interface Data {
          String getResult();
          }
          public class FutureData implements Data{
          protected Data data=null;
          protected boolean f=false;
          public synchronized void setData(Data data) {
          if(f) {
          return;
          }
          f=true;
          this.data=data;
          notifyAll();
          }
          @Override
          public synchronized String getResult() {
          while (!f) {
          try {
          wait();
          } catch (InterruptedException e) {
          e.printStackTrace();
          }
          }
          return data.getResult();
          }
          }
          public class RealData implements Data{
          protected  String s;
          public RealData(String name) {
          StringBuffer sb=new StringBuffer("");
          for (int i = 0; i < 10; i++) {
          sb.append(name);
          try {
          Thread.sleep(1000);
          } catch (InterruptedException e) {
          e.printStackTrace();
          }
          }
          s=sb.toString();
          }
          @Override
          public String getResult() {
          // TODO Auto-generated method stub
          return s;
          }
          }
          public class Client {
          public Data request(final String ss) {
          final FutureData f=new FutureData();
          new Thread() {
          public void run() {
          RealData r=new RealData(ss);//模擬復(fù)雜的數(shù)據(jù)封裝和處理
          f.setData(r);
          };
          }.start();
          return f;
          public static void main(String[] args) {
          Client client=new Client();
          Data d = client.request("123");
          System.out.println(d.getResult());
          }
          }
          public class FutureTest {
          public static void main(String[] args) throws InterruptedException, ExecutionException {
          ExecutorService e=Executors.newFixedThreadPool(11);
          FutureTask<String> f=new FutureTask<>(new Callable<String>() {
          @Override
          public String call() throws Exception {
          Thread.sleep(5000);
          return "aa";
          }
          }); 
          e.submit(f);
          System.out.println(f.get());
          }
          }

          posted on 2019-02-18 10:08 楊軍威 閱讀(124) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 景东| 济源市| 凤冈县| 西乌珠穆沁旗| 曲水县| 静乐县| 华坪县| 苗栗县| 清镇市| 获嘉县| 定日县| 江孜县| 正宁县| 海晏县| 大姚县| 原阳县| 民权县| 光山县| 法库县| 壶关县| 澎湖县| 汉寿县| 扬中市| 康平县| 大渡口区| 吴川市| 孟连| 射阳县| 华阴市| 满洲里市| 苏尼特左旗| 洪雅县| 酉阳| 奈曼旗| 漠河县| 湖北省| 武城县| 增城市| 昭苏县| 佛坪县| 横山县|