JAVA异步调用再度改进

简介:
NEW A(MANY)-》SEND MESSAGE(UNIQUE)
NEW B(MANY)-》SET MESSAGE(UNIQUE)


ONLY ONE C(IF A GET MESSAGE A SENT,C remove MESSAGE FROM HASHMAP)



public class AClient2C2 {

	private final long timeout = 10000;

	public void test(String taskId) {
		long count = 0;
		while (CData2C2.getInstance().isHasTask(taskId) && count < timeout) {

			try {
				System.out.println("wait+"+count);
				Thread.sleep(1000);
				count += 1000;
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if(count>=timeout) {
			System.out.println("超时");
		}

	}
	
	public static void main(String[] args){
		//B的方法会改变CData2C2的值
		CData2C2.getInstance().regesitTaskId("aaaa");
		AClient2C2 ac = new AClient2C2();
		ac.test("aaaa");
		//A的方法获取CData2C2的值会把对象从HASHMAP里删除
		CData2C2.getInstance().removeTaskId("aaaa");
	}
}



import java.util.HashMap;
import java.util.Map;


public class BService2C2 {
	
	
}



import java.util.HashMap;
import java.util.Map;


public class CData2C2 {
	
	private static CData2C2 instance;
	
	private static Map<String,String> map = new HashMap<String,String>();

    private CData2C2() {
    	
    }
    
    public static CData2C2 getInstance(){
    	if(instance==null){
    		instance = new CData2C2();
    	}
    	return instance;
    }
    

    public void regesitTaskId(String taskId){
    	map.put(taskId, taskId);
    }
    
    public void removeTaskId(String taskId){
    	map.remove(taskId);
    }
    
    public boolean isHasTask(String taskId){
    	if(null!=map.get(taskId)){
    		return Boolean.TRUE;
    	}
    	return Boolean.FALSE;
    }
    
    
}


目录
相关文章
|
Java
Java 自定义切割方法(改进原生切割方法)
Java 自定义切割方法(改进原生切割方法)
88 0
Java 自定义切割方法(改进原生切割方法)
|
Java API 调度
Java 异步调用实践
本文介绍了线上业务中的一些异步调用实践经验,包含 IO 模型介绍、CompletableFuture 的基本使用、RPC 异步调用、异步 HTTP 客户端 Spring WebClient 的使用等。
620 0
Java 异步调用实践
|
搜索推荐 算法 Java
面试官:手写一个选择排序并对其改进(java代码实现)
排序一直是面试中的常见算法题,不管你是找工作、还是考研、工作中使用、应付期末考试等都很常见,也很重要,因此对常见的八种排序算法,进行一个梳理。希望对你有所帮助。这是第一篇文章,讲解的是选择排序。
97 0
面试官:手写一个选择排序并对其改进(java代码实现)
|
Java
java之写接口回调编程经验改进
java之写接口回调编程经验改进
103 0
|
算法 Java 测试技术
Java 12 与Java 13 新特性预览:Switch表达式、GC新垃圾回收算法、低延时GC、ZGC改进等
Java 12 与Java 13 新特性预览:Switch表达式、GC新垃圾回收算法、低延时GC、ZGC改进、文本块等
8213 0
|
Java
Java网络编程多线程改进上传文件
Java网络编程多线程改进上传文件   服务器的代码用线程进行封装(多线程),这样可以模拟一个同时接收多人上传文件的服务器。   (用循环也可以但是效率低,是单线程的程序) /* * 通过while循环可以改进一个服务器接收多个客户端。
1383 0
|
Java Docker 容器
Java 10改进了对Docker容器的支持
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/79871929 Java 10改进了对Docker容器的支持 2018.4.9 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。
2919 0

热门文章

最新文章