简单的说我对这个一点都不知道,望精通这方面的同仁解惑,看了一些资料,如坠入云雾中,十分感谢!

解决方案 »

  1.   

    进程:一个程序完整的生命周期,就是一个进程,如就绪、执行、等待等。。
    线程:是进程中的一个时间片断
    多线程:多个线程并发执行,可以提高执行效率,实现资源共享等
    synchronized:当多个线程共享一个资源时,若要保持数据同步,就必须枷锁,于是在前面加上这个符号
      

  2.   

    线程跟进程很相似,包括几种状态:就绪,运行,阻塞,等待。。
    线程sampleThread start()后,sampleThread 就处于就绪状态;
    轮到sampleThread 运行时,就说sampleThread 处于运行状态;
    wait后后线程处于阻塞状态,同时通过notify/notifyAll唤起,这对方法是从Object那里继承来的,他们只有要求数据同步(synchronized)时才能用;
    sleep,yield之后,sampleThread 处于等待状态;守护线程是个后台线程,附属与主线程,随着主线程的消亡而消亡,我们可以用join,来让主线程等待其执行完后在消亡,主要用做监视线程死锁:假如同时有碗和筷子才能吃饭,A有碗没筷,处于阻塞状态,B有筷没碗也处于阻塞状态,于是两人相互等待,就都饿死了
      

  3.   

    说道多线程,不得不说一下线程池。
    现在好多的应用(web)需要一定数量的线程并发执行。我们知道创建和销毁对象是需要占用系统资源的,但如果频繁的创建和销毁线程,不但体现不了多线程的优势,反而影响系统性能,于是就出现了线程池(其实也是由对象池引申来的,数据库连接池、Socket连接池也是如此)---保持一定数量的线程常驻内存,让他们放在一个池(集合)中,需要的时候从中取出,用完了再归还。这样既能保证多线程并发执行的性能优势,又不会因为过多的线程而使系统不堪重负。
      

  4.   

    本人以前曾经用synchronized解决生产者消费者问题,代码和文章在http://blog.csdn.net/congliu/archive/2005/07/18/428251.aspx