The allocation of resources to tasks in an efficient manner is a key problem in computer science. One important application domain for solutions to this class of problem is the allocation of sensor resources for environmental monitoring, surveillance, or similar sensing tasks. In real-world problem domains, the problem is compounded by the fact that the number of tasks and resources change over time, the number of available resources is limited and tasks compete for resources. Thus, it is necessary for a practical allocation mechanism to have the flexibility to cope with dynamic environments, and to ensure that unfair advantages are not given to a subset of the tasks (say, because they arrived first). Typical contemporary approaches use agents to manage individual resources, and the allocation problem is modelled as a coordination problem. In existing approaches, however, the successful allocation of resources to a new task is strongly dependent upon the allocation of resources to existing tasks. In this paper we propose a novel negotiation mechanism for exchanging resources to accommodate the arrival of new tasks, dynamically re-arranging the resource allocation. We have shown, via a set of experiments, that our approach offers significantly better results when compared with an agent-based approach without resource re-allocation through concurrent negotiation.