LimeWire handles all inactive downloads with a single thread since LimeWire 4.1.2. Previously, every single download required it's own thread to manage itself. Active downloads, however, require a thread for management and another thread for each source. There's no way around that, just yet.
We're in the process of upgrading the network to Java 1.4 (part of what our new installer is planned to do). Once that happens, we can begin to design using what's called "non-blocking I/O" -- that means we can send & receive information asynchronously -- without having to dedicate a resource just to sending (and waiting till it was sent) & receiving (and waiting till something was received).
We had always intended to add NIO before, but the complexity of having to design for both blocking & non-blocking streams always stopped the project from being finished. Using Java 1.4, we can design strictly for NIO (not to mention use lots of other great Java 1.4 features). |