WEB开发网
开发学院软件开发Java 多线程基础总结二--Thread 阅读

多线程基础总结二--Thread

 2010-01-22 00:00:00 来源:WEB开发网   
核心提示: 这个例子的结果是main主线程睡两秒之后说再见,而子线程则是在这两秒内计计数然后跟着一起说再见,多线程基础总结二--Thread(2),当然它很不情愿,因为它想计10秒,关于java.util.concurrent包的整理,还没想好搞透彻,但是没机会,把t.setDaemonThread(tru

这个例子的结果是main主线程睡两秒之后说再见,而子线程则是在这两秒内计计数然后跟着一起说再见。当然它很不情愿,因为它想计10秒,但是没机会。把t.setDaemonThread(true)注释掉你会看到主线程说再见了,但是子线程快快乐乐的计完数说再见。这就是守护线程的作用,一切以非守护线程为主!很痴情啊,哈哈。

另一个就是join方法,在简单的多线程编程中,常常使用它来控制线程的执行顺序,也仅仅是一小部分的作用。它的内部实现是wait(0)直至被调用线程执行完毕,调用线程才被唤醒。还是写个小例子解释一下:

Java代码

/** 
 * User: yanxuxin 
 * Date: Dec 11, 2009 
 * Time: 6:27:04 PM 
 */ 
public class JoinSample { 
  public static void main(String[] args) throws Exception{ 
    Thread t = new Thread(new SubThread()); 
    t.start(); 
    t.join(); 
    System.out.println("The end of main thread..."); 
  } 
} 
 
class SubThread implements Runnable { 
 
  public void run() { 
    try { 
      Thread.sleep(2000); 
    } catch (InterruptedException e) { 
      e.printStackTrace(); 
    } 
    System.out.println("The end of sub thread..."); 
  } 
}

在这个例子中,被调用join()的线程是t,而调用线程则是main所以会先打印下面的那句再打印上面的,即使t要先睡两秒,main也得等着。把t.join()注释掉,main就可以扬眉吐气了。

很多情况下我们用不到多线程,但是不幸或者幸运的是硬件的发展,在核心频率因为晶体管密度的物理原因而很难再有突破时,CPU制造商都开始从核心的数量上做文章了。从双核到4核,6核,8核,16核,48核...这么多核心带来了编程的转变,越来越多的程序需要考虑多核多线程的优势,加上技术发展的原始推动力--商业需求,共同推进了多线程编程时代。因为并发优势而被炒作为Java终结者的Scala慢慢的抬起头来,我也简单的学习了其部分内容,在多线程的编程上的确也没Java这么多的陷阱,封装的更简洁。Java始终给人的感觉是写了很多,做的很少,这种感觉程序员或许能接受,毕竟代码量上去了,但是估计烧钱的老板会疯掉。不过看到JDK7将会大量的改进java.util.concurrent包的实用性和并发性能的提高,或许掌握Java多线程的门槛会低一点。但愿不用混搭语言解决问题,虽然都是跑在JVM上的静态语言。关于java.util.concurrent包的整理,还没想好搞透彻,暂时无话可说。

上一页  1 2 

Tags:线程 基础 总结

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接