标签:mEndLock String int Spring private Alibaba ip public Cloud
网盘download:Spring Cloud Alibaba 大型互联网领域多场景最佳实践
聚焦Spring Cloud Alibaba,深入剖析5大核心组件原理,并结合真实电商微服务架构,讲透框架在多场景下的最佳实践,助力全面提升微服务实战能力,轻松应对微服务领域的各种技术难题。
技术适合人群要求
熟悉java web开发、会使用maven 和spring框架
对于springboot 有一定的了解
技术储备要求
Jdk 1.8、Spring Cloud Hoxton.SR8、Spring Cloud Hoxton.SR8、Springcloud Hoxton.SR8
SpringCloudAlibaba 2.2.5 RELEASE、Nacos 1.4.1、Sentinel 1.8.0
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
/**
- Created by QiuJU
- on 2014/9/21.
*/
public class SimplePing implements Runnable {
private final Object mEndLock = new Object();
private boolean IsEnd = false;
private int arrivedCount = 0;
private int Count;
private int TimeOut;
private String Name;
private int mEndCount;
private String mIp = null;
private float mLo***ate = 1f;
private float mDelay = 0;
public SimplePing(String name, int count, int timeOut) {
Count = mEndCount = count;
TimeOut = timeOut;
Name = name;
for (int i = 0; i < mEndCount; i++) {
Thread thread = new Thread(this);
thread.setDaemon(true);
thread.start();
}
if (!IsEnd) {
try {
synchronized (mEndLock) {
mEndLock.wait();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
private void setEnd(boolean isArrived, long delay, String ip) {
synchronized (mEndLock) {
Count--;
if (isArrived) {
arrivedCount++;
mDelay = (mDelay + delay) / 2f;
if (ip != null)
mIp = ip;
}
}
if (Count == 0)
setEnd();
}
private void setEnd() {
mLo***ate = (mEndCount - arrivedCount) / mEndCount;
IsEnd = true;
synchronized (mEndLock) {br/>mEndLock.notifyAll();
}
}
@Override
public void run() {
long delay = 0;
boolean isArrived = false;
String ip = null;
try {
long startTime = System.currentTimeMillis();
InetAddress address = InetAddress.getByName(Name);
isArrived = address.isReachable(TimeOut);
delay = System.currentTimeMillis() - startTime;
ip = address.getHostAddress();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
setEnd(isArrived, delay, ip);
}
}
public String getIp() {
return mIp;
}
public float getLo***ate() {
return mLo***ate;
}
public float getDelay() {
return mDelay;
}
public boolean getIsSucceed() {
return arrivedCount > 0;
}
}
在类中运用的是:
1
2
3
4
5
long startTime = System.currentTimeMillis();
InetAddress address = InetAddress.getByName(Name);
isArrived = address.isReachable(TimeOut);
delay = System.currentTimeMillis() - startTime;
ip = address.getHostAddress();
标签:mEndLock,String,int,Spring,private,Alibaba,ip,public,Cloud 来源: https://blog.51cto.com/u_15200877/2830281
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。