线程存在的目的就是为了让程序里的多个任务并行地运行。程序里的多个任务可能是多个不同的,比如说在屏幕上绘制的同时响应用户的动作;也可能是多份相同的任务,比如说服务器中的servlet。
为了使程序的运行逻辑更加符合我们的思维方式,我们可能会选择线程。比如说用程序描叙一个人一边抽烟,一边思考:我们可能将就着,让他先抽完烟,再让他思考?从软件开发人员角度考虑,会觉得很怪。明明是一边抽烟一边思考。怎么变成了先抽完烟再思考了?我们也可能考虑线程:写一个他抽烟的线程,写一个他思考的线程,然后在程序入口,让抽烟的线程启动,然后让思考的线程启动。当然这不是必须的,写不写线程无所谓,因为很多时候只要不影响结果,谁先谁后无所谓。
但有些情况却不得不使用线程。比如说登录MSN,要是网络不好,等了二三十秒都登录不上,我想取消都取消不了,用户不是很烦躁?