This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
Actually, many people ignore the why of the matter: Depends on what your target user is. If the sole thread of execution, running both the user-interface and the program it's self, tries to open a socket or something that the operating system does not manage for the programmer - the mouse and everything else for that program is hung. To the user it appears that the program has failed, and it has from a reliability issue, because the user cannot regain control of the machine if the socket call hangs. The correct way to do this is make a boolean variable in the class instantiated, then occsionally check that variable from another thread. The reason for this is that the only way to break the socket call is to the socket call. The only way to interrupt it is from another Thread.
Interrupts should only be used as crisis-management.
Not for routine load-balancing.
"The differential equations that describe dynamic interactions of power generators are similar to that of the gravitational interplay among celestial bodies, which is chaotic in nature."