快速业务通道

Java多线程编程基础之线程和多线程 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23

Java多线程编程基础之线程和多线程

时间:2010-12-09 axman

[写在前面]

随着计算机技术的发展,编程模型也越来越复杂多样化。但多线程编程模型 是目前计算机系统架构的最终模型。随着CPU主频的不断攀升,X86架构的硬件已 经成为瓶,在这种架构的CPU主频最高为4G。事实上目前3.6G主频的CPU已经接近了顶峰。

如果不能从根本上更新当前CPU的架构(在很长一段时间内还不太可能),那么 继续提高CPU性能的方法就是超线程CPU模式。那么,作业系统、应用程序要发挥 CPU的最大性能,就是要改变到以多线程编程模型为主的并行处理系统和并发式 应用程序。

所以,掌握多线程编程模型,不仅是目前提高应用性能的手段,更是下一代 编程模型的核心思想。多线程编程的目的,就是"最大限度地利用CPU资源 ",当某一线程的处理不需要占用CPU而只和I/O,OEMBIOS等资源打交道时, 让需要占用CPU资源的其它线程有机会获得CPU资源。从根本上说,这就是多线程 编程的最终目的。

[第一需要弄清的问题]

如同程序和进程的区别,要掌握多线程编程,第一要弄清的问题是:线程对 象和线程的区别。

线程对象是可以产生线程的对象。比如在java平台中Thread对象,Runnable 对象。线程,是指正在执行的一个指点令序列。在java平台上是指从一个线程对 象的start()开始,运行run方法体中的那一段相对独立的过程。

鉴于作者的水平,无法用更确切的词汇来描述它们的定义。但这两个有本质 区别的概念请初学者细细体会,随着介绍的深入和例程分析的增加,就会慢慢明 白它们所代表的真实含义。

天下难事必始于易,天下大事必始于细。

让我们先从最简单的"单线程"来入手:(1)带引号说明只是相对而 言的单线程,(2)基于java。

class BeginClass{  public static void main(String[] args){   for(int i=0;i<100;i++)    System.out.println("Hello,World!");  } }

如果我们成功编译了该java文件,然后在命令行上敲入:

java BeginClass

现在发生了什么呢?每一个java程序员,从他开始学习java的第一分钟里都 会接触到这个问题,但是,你知道它到底发生发什么?

JVM进程被启动,在同一个JVM进程中,有且只有一个进程,就是它自己。然 后在这个JVM环境中,所有程序的运行都是以线程来运行。JVM最先会产生一个主 线程,由它来运行指定程序的入口点。在这个程序中,就是主线程从main方法开 始运行。当main方法结束后,主线程运行完成。JVM进程也随之退出。

我们看到的是一个主线程在运行main方法,这样的只有一个线程执行程序逻 辑的流程我们称

之为单线程。这是JVM提供给我们的单线程环境,事实上,JVM底层还至少有 垃圾回收这样的后台线程以及其它非java线程,但这些线程对我们而言不可访问 ,我们只认为它是单线程的。

Java多线程编程基础之线程和多线程(2)

时间:2010-12-09 axman

主线程是JVM自己启动的,在这里它不是从线程对象产生的。在这个线程中, 它运行了main方法这个指令序列。理解它,但它没有更多可以研究的内容。

[接触多线程]

class MyThread extends Thread{  public void run(){   System.out.println("Thread say:Hello,World!");  } } public class MoreThreads{  public static void main(String[] args){   new MyThread();   new MyThread().start();   System.out.println("Main say:Hello,World");  } }

执行这个程序,main方法第一行产生了一个线程对象,但并没有线程启动。

main方法第二行产生了一个线程对象,并启动了一个线程。

main方法第三行,产生并启动一个线程后,主线程自己也继续执行其它语句 。

我们先不研究Thread对象的具体内容,稍微来回想一下上面的两个概念,线 程对象和线程。在JAVA中,线程对象是JVM产生的一个普通的Object子类。而线 程是CPU分配给这个对象的一个运行过程。我们说的这个线程在干什么,不是说 一个线程对象在干什么,而是这个运行过程在干什么。如果一时想不明白,不要 急,但你要记得它们不是一回事就行了。

累了吧?为不么不继续了?

基于这种风格来介绍多线程,并不是每个人都喜欢和接受的,如果你不喜欢 ,正好不浪费你的时间了,而如果你接受的话,那就看下一节吧。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号