You could create a concurrent thread to track this kind of thing, but since your onLoop should be continuously looping anyway, and you don't need such a big degree of accuracy (oh, and it can be easy to implement new threads incorrectly), why not just put the check in your onLoop (or create a new state if you're using some kind of structure):
if (getSkills().getDynamic(Skill.HITPOINTS) < getSkills().getStatic(Skill.HITPOINTS)) {
//We've lost some health - run!
}