實現個簡單的Future

2021-09-11 06:32:49 字數 1829 閱讀 6952

直接貼demo:

1.第一種使用喚醒等待執行緒方式:

public inte***ce gycallable

public class gyfeature implements runnable

@override

public void run() catch (throwable throwable) finally

}public object get()

return result;

}}public class gytask

}public class test);

gytask task2 = new gytask();

gyfeature submit2 = task2.submit(() -> );

system.out.println(submit.get());

system.out.println(submit2.get());

}}

2.第二種用到countdownlatch :

public class main3 

static class client

public void sett(t t)

}static class service catch (interruptedexception e)

}).start();

return this;

}public t get() throws interruptedexception

}public static void main(string args) throws interruptedexception );

thread.sleep(2000);

system.out.println("買菜");

string s = submit.get();

system.out.println(s);

long end = system.currenttimemillis();

system.out.println(end - start);

}}

結果:

買菜邊做飯邊等菜

3041

3.第三種使用判斷成員變數:

public class main6 

static class client

public void sett(t t)

}static class service

} catch (interruptedexception e)

}).start();

return this;

}public t get() throws interruptedexception

return this.client.gett();}}

}public static void main(string args) throws interruptedexception );

thread.sleep(500);

system.out.println("買菜");

string s = submit.get();

system.out.println(s);

long end = system.currenttimemillis();

system.out.println(end - start);

}}

其實這個思路就是:

先執行個執行緒,執行緒是沒有返回值的.這時傳入乙個封裝類,去接受執行緒裡的結果.然後使用執行緒工具使得到結果方法和非同步執行緒阻塞,改變執行順序.

future的簡單實現

一 入門 public classaimplementscallable org.junit.test public voidtest3 throwsexecutionexception,interruptedexception 這樣結果就輸出了 aaa很簡單吧,現在來簡單講解下future的使用。...

簡單的Future模式及其實現

future模式是乙個多執行緒的設計模式,以下乙個簡單的實現例子。實現的原理有點類似訂蛋糕,你去商店定做蛋糕時,並不能直接拿到蛋糕,而是拿到購物小票之類的,你需要等蛋糕製作完成後,再來取。在這期間你可以去做其他的事情,而不必在蛋糕店等待蛋糕的製作。這和單獨開乙個執行緒沒有什麼區別,具體有什麼好處我目...

Python的未來 future模組

簡單介紹一下python未來將會支援的一些語言特點 雖然ibm的 上也有介紹.但是太凌亂了.而且中翻譯過後,的格式想狗屎一樣.下面簡單介紹一下這些特點 nested scopes 改變名空間的搜尋過程 generators 使用生成器.能夠產生能儲存當前狀態的函式.division 精確的除法 ab...