1、多个服务共有的pojo类最好抽取到一个common工程中。
2、从面相对象的角度,Lease应该作为ServiceInstance的内部类。因为Lease不能脱离ServiceInstance而存在。
3、将一个线程改为demon线程
public ServiceAliveMonitor() {
this.daemon = new Daemon();
// 只要设置了这个标志位,就代表这个线程是一个daemon线程,后台线程
// 非daemon线程,我们一般叫做工作线程
// 如果工作线程(main线程)都结束了,daemon线程是不会阻止jvm进程退出的
// daemon线程会跟着jvm进程一起退出
daemon.setDaemon(true);
}
4、线程组、父子线程,默认子线程的线程组就是父线程的线程组。用得少。
5、默认线程会加入父线程的ThreadGroup,或者你自己手动创建ThreadGroup,ThreadGroup也有父ThreadGroup,ThreadGroup可以包裹一大堆的线程,然后统一做一些操作,比如统一复制、停止、销毁,等。
6、线程优先级在1~10之间,一般不用。线程优先级不能大于ThreadGroup的优先级。