等待超时模式:
开发中经常糊会遇到这样的情况,调用一个方法时等待一段时间,如果该方法在给定的时间内无法得到结果,就立刻返回。
假设超时时间为T,那么可以推断出在当前时间now+T之后就会超时。
定义变量如下:
等待超时时间:REMAINING=T
超时时间:FUTURE=now+T
这时仅需要wait(REMAINING)即可,在wait(REMAINING)返回之后会将执行REMAINING- FUTURE=now,如果REMAINING小于等于0 ,标识已经超时,直接退出,否则继续等待。
简单的数据库连接池示例:
定义ConnectionDriver类:

定义ConnectionPool类:


测试类:ConnectionPoolTest:


静态内部类:ConnectionRunner


统计结果分析:

在资源一定的情况下,随着客户端线程的逐步增加 客户端出现超时无法获取连接的比率不断升高,虽然客户端线程在这种情况下会出现连接无法获取的情况,但是它能够保证客户端 线程不会一直挂在连接获取的操作上,而是 按时返回,并告知客户端连接获取出现问题,是系统的中自我保护机制。
扩展缓存案例:


文章转载自小胡的博客,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




