BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

多线程主题

     摘要: 多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立。

  线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单。

  多个线程的执行是并发的,也就是在逻辑上“同时”,而不管是否是物理上的“同时”。如果系统只有一个CPU,那么真正的“同时”是不可能的,但是由于CPU的速度非常快,用户感觉不到其中的区别,因此我们也不用关心它,只需要设想各个线程是同时执行即可。

  多线程和传统的单线程在程序设计上最大的区别在于,由于各个线程的控制流彼此独立,使得各个线程之间的代码是乱序执行的,由此带来的线程调度,同步等问题,将在以后探讨。  阅读全文

posted @ 2007-11-09 01:43 dybjsun 阅读(191) | 评论 (0)  编辑 |

     摘要: java语言已经内置了多线程支持,所有实现Runnable接口的类都可被启动一个新线程,新线程会执行该实例的run()方法,当run()方法执行完毕后,线程就结束了。一旦一个线程执行完毕,这个实例就不能再重新启动,只能重新生成一个新实例,再启动一个新线程。  阅读全文

posted @ 2007-11-09 01:41 dybjsun 阅读(186) | 评论 (0)  编辑 |

     摘要: 通常,多线程之间需要协调工作。例如,浏览器的一个显示图片的线程displayThread想要执行显示图片的任务,必须等待下载线程downloadThread将该图片下载完毕。如果图片还没有下载完,displayThread可以暂停,当 downloadThread完成了任务后,再通知displayThread“图片准备完毕,可以显示了”,这时,displayThread继续执行。  阅读全文

posted @ 2007-11-09 01:40 dybjsun 阅读(199) | 评论 (0)  编辑 |

     摘要: 前面谈了多线程应用程序能极大地改善用户相应。例如对于一个Web应用程序,每当一个用户请求服务器连接时,服务器就可以启动一个新线程为用户服务。  阅读全文

posted @ 2007-11-09 01:38 dybjsun 阅读(185) | 评论 (0)  编辑 |

     摘要: 当多线程启动时,怎么才能控制他们有秩序地执行。本例模拟一个容器,当容器里有东西时,通知各个线程来取得这些东西,如果没有取到东西,则进入等待状态。(特别注意在通知各个线程notifyAll和等待wait这些方法一定要写在同步块中)  阅读全文

posted @ 2007-11-09 01:31 dybjsun 阅读(204) | 评论 (0)  编辑 |