A fundamental issue in P2P networks is that of distributing workload in a balanced way to optimize performance. Unfortunately, optimal load balance is difficult to realize, although it is easy to compute, because participants of P2P networks are usually self-interested and seek to maximize their individual utility without considering system-wide utility. In this paper, we study the influence of selfish behaviors on the load balance in P2P networks, and propose a priority based load balancing scheme to help a P2P network achieve better performance. The scheme is simple and effective, and can be easily used in a P2P environment. Besides presenting the theoretical foundation of our scheme, we also address its major implementation issues and conduct extensive experiments to verify its effectiveness and practicality.