sebb pointed out: "QueryRunner Javadoc says the class is thread-safe. However it has a protected mutable variable DataSource which can also be set/got via public methods. If one thread sets the variable, another may not see the correct value, so the class is not thread-safe."
We should make the DataSource final and remove the setter.