Guava的Supplier实现单例详解编程语言
编程语言 实现 详解 单例 Guava SUPPLIER
2023-06-13 09:20:46 时间
//shouldInitTheSupplierWrappedObjectWhenGetObject();
shouldInitTheSupplierWrappedObjectForOnlyOneTime();
} catch (Exception e) {
e.printStackTrace();
private static void shouldInitTheSupplierWrappedObjectWhenGetObject() throws Exception {
Supplier Integer memoize = Suppliers.memoize(new Supplier Integer () {
@Override
public Integer get() {
System.out.println("init supplier wrapped object");
return 1;
});
System.out.println("main thread block");
Thread.sleep(2000);
System.out.println(memoize.get());
System.out.println(memoize.get());
private static void shouldInitTheSupplierWrappedObjectForOnlyOneTime() {
Supplier Admin memoize = Suppliers.memoize(new Supplier Admin () {
@Override
public Admin get() {
System.out.println("init supplier wrapped object");
ServiceLoader Admin loader = ServiceLoader.load(Admin.class);
return Iterables.getFirst(loader, null);
});
System.out.println(memoize.get());
System.out.println(memoize.get());
System.out.println(memoize.get());
}
package suppliers; * @author xfyou * @date 2018/7/31 public interface User { /** * @param firstName * @param lastName void addUser(String firstName, String lastName); }
package suppliers; import lombok.ToString; import java.util.concurrent.atomic.AtomicReference; * @author xfyou * @date 2018/7/31 @ToString public class Admin implements User { private static final AtomicReference Admin INSTANCE = new AtomicReference (); public Admin() { if (!INSTANCE.compareAndSet(null, this)) { throw new IllegalStateException("This class only can be initialized once"); } else { System.out.println("Construct"); @Override public void addUser(String firstName, String lastName) { System.out.println("Add new user"); }
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/15922.html
cgojava相关文章
- 分治法-最近距离问题Java实现详解编程语言
- python在windows下实现ping操作并接收返回信息详解编程语言
- python使用Queue实现优先级队列详解编程语言
- JavaScript实现限时抢购实例详解编程语言
- JS+CSS实现简易计算器详解编程语言
- 如何用70行Java代码实现深度神经网络算法详解编程语言
- JS前台加密,java后台解密实现详解编程语言
- Java生成随机无重复随机数,使用ArrayList实现详解编程语言
- java实现分页功能的类详解编程语言
- ScalaPB(2): 在scala中用gRPC实现微服务详解编程语言
- 实现border内边距与图片半透明详解编程语言
- Hashtable实现原理及源码分析详解编程语言
- ajaxFileUpload+struts2实现多文件上传详解编程语言
- MyEclipse添加ibatis DTD文件实现xml的自动提示功能详解编程语言
- EasyUI实现异步加载tree(整合Struts2)详解编程语言
- java和Struts2实现文件下载和上传详解编程语言
- Quartz框架实现任务调度详解编程语言
- Python3 实现(wxpy)用微信自动定时给朋友定时推广详解编程语言
- html和js实现滚动条效果详解编程语言
- JS实现sleep()方法详解编程语言
- Bootstrap完美select标签下拉菜单实现详解编程语言
- jquery插件实现瀑布流详解编程语言
- SAP–用BAPI-实现销售订单修改-Cond-Value详解编程语言
- bbs项目实现点赞和评论的功能详解编程语言