动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.关于能提高Java代码可重用性的三.
.JAVA程序员面试32问 选择自 liuj.
.使用ejbframe轻松编写EJB组件.
.C与Java在流程控制上的异同.
.Java程序中用JFreeChart制作图形.
.Java编程新手入门:运算符优先级.
.J2SE API读取Properties文件六种.
.Java Application启动画面的制作.
.Jakarta Struts应用的七个经验(.
.提高EJB性能的十大技巧.
.用Java创建带图标和缩进的JCombo.
.Jbuilder7与Weblogic7整合开发之.
.GetDriveName 方法.
.在Eclipse 3.1体验J2SE 5.0新特性.
.逗号运算符 (,).
.Write 方法.
.用line_as_stream 简化流的读取.
.在Java中实现UDP协议编程的方法.
.JDBC 概述(三).
.Spring事务处理及其AOP框架的内幕.

在Java程序中采用线程获取优异性能

发表日期:2008-1-5 |



  什么是线程?
  线程的概念并不难于把握:它是程序代码的一个独立的执行通道。当多个线程执行时,经由相同代码的一个线程的通道通常与其它的不同。例如,假设一个线程执行一段相当于一个if-else语句的if部分的字节代码时,而另一个线程正执行相当于else部分的字节代码。JVM怎样保持对于每一个线程执行的跟踪呢?JVM给每一个线程它自己的方法调用堆栈。另外跟踪当前指令字节代码,方法堆栈跟踪本地变量,JVM传递给一个方法的参数,以及方法的返回值。 
  当多个线程在同一个程序中执行字节代码序列时,这种行为叫作多线程。多线程在多方面有利于程序: 
  ·当执行其它任务时多线程GUI(图形用户界面)程序仍能保持对用户的响应,比如重编页码或打印一个文档。 
  ·带线程的程序一般比它们没有带线程的副本程序完成得快。这尤其表现在线程运行在一个多处理器机器上,在这里每一个线程都有它自己的处理器。
  Java通过java.lang.Thread类完成多线程。每一个线程对象描述一个单独的执行线程。那些运行发生在线程的run()方法中。因为缺省的run()方法什么都不做,你必须创建Thread子类并重载run()以完成有用的工作。练习列表1中领略一个在Thread中的线程及多线程: 
  列表1. ThreadDemo.java 
  // ThreadDemo.java
  class ThreadDemo
  {
  public static void main (String [] args)
  {
  MyThread mt = new MyThread ();
  mt.start ();
  for (int i = 0; i < 50; i++)
  System.out.println ("i = " + i + ", i * i = " + i * i);
  }
  }
  class MyThread extends Thread
  {
  public void run ()
  {
  for (int count = 1, row = 1; row < 20; row++, count++)
  {
  for (int i = 0; i < count; i++)
  System.out.print ('*');
  System.out.print ('\n');
  }
  }
  }
  列表1显示了一个由类ThreadDemo和MyThread组成的应用程序的源代码。类ThreadDemo通过创建一个MyThread对象驱动应用程序,开始一个与其对象相关的线程并执行一段打印一个正方形表的代码。相反, MyThread重载Thread的run()方法打印(通过标准输入流)一个由星形符号组成的直角三角形。 
  当你键入java ThreadDemo运行应用程序时, JVM创建一个运行main()方法的开始线程。通过执行mt.start (),开始线程告诉JVM创建一个执行包含MyThread对象的run()方法的字节代码指令的第二个线程。当start()方法返回时,开始线程循环执行打印一个正方形表,此时另一个新线程执行run()方法打印直角三角形。 
  输出会象什么样呢?运行ThreadDemo就可以看到。你将注重到每一个线程的输出与其它线程的输出相互交替。这样的结果是因为两个线程将它们的输出都发送到了同样的标准输出流。 
  注重
  多数(不是所有)JVM设备使用下层平台的线程性能。因为那些性能是平台特有的,你的多线程程序的输出顺序可能与一些人的其他输出的顺序不一样。这种不同是由于时序的安排,我将在这一系列的稍后探讨这一话题。
  线程类
  要精通写多线程代码,你必须首先理解创建Thread类的多种方法。这部份将探讨这些方法。明确地说,你将学到开始线程的方法,命名线程,使线程休眠,决定一个线程是否激活,将一个线程与另一个线程相联,和在当前线程的线程组及子组中列举所有激活的线程。我也会讨论线程调试辅助程序及用户线程与监督线程的对比。 
  我将在以后的文章中介绍线程方法的余下部份,Sun不赞成的方法除外。 
  警告
  Sun有一些不赞成的线程方法种类,比如suspend()和resume(),因为它们能锁住你的程序或破坏对象。所以,你不必在你的代码中调用它们。考虑到针对这些方法工作区的SDK文件,在这篇文章中我没有包含这些方法。 
  构造线程
  Thread有八个构造器。最简单的是:
  ·Thread(),用缺省名称创建一个Thread对象 
  ·Thread(String name),用指定的name参数的名称创建一个Thread对象
  下一个最简单的构造器是Thread(Runnable target)和Thread(Runnable target, String name)。 除Runnable参数之外,这些构造器与前述的构造器一样。不同的是:Runnable参数识别提供run()方法的线程之外的对象。(你将在这篇文章稍后学到Runnable。)最后几个构造器是Thread(String name),Thread(Runnable target),和Thread(Runnable target, String name)。然而,最后的构造器包含了一个为了组织意图的ThreadGroup参数。 
  最后四个构造器之一,Thread(ThreadGroup group, Runnable target, String name, long stackSize),令人感爱好的是它能够让你指定想要的线程方法调用堆栈的大小。能够指定大小将证实在使用递归方法(一种为何一个方法不断重复调用自身的技术)美丽地解决一些问题的程序中是十分有帮助的。通过明确地设置堆栈大小,你有时能够预防StackOverflowErrors。然而,太大将导致OutOfMemoryErrors。同样,Sun将方法调用堆栈的大小看作平台依靠。
上一篇:编程技巧:在Java应用开发中如何使用线程 人气:533
下一篇:Java编程中多线程设计要点全接触 人气:432
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-10 企业网站智能管理系统(TZIMS) v6
2008-10-10 拓文asp.net网站内容管理系统 v6
2008-10-10 动网论坛PHP版 v2.0++ Build 081
2008-10-10 免费时代CMS v5.0
2008-10-10 wodig第四季中文DIGG社区 v4.1 b
2008-10-10 老Y文章管理系统 v2.2 bulid 081
2008-10-10 魔法盒动感相册 ASP+SQL版 v2.0
2008-10-10 Asoft签到管理系统 v3.0 Pack1
2008-10-10 哥特人音乐网潮流留言本 v1.1
2008-10-11 Photogene照片编辑器 v1.5 汉化破
2008-10-11 WriteRoom共享文档 v1.0 破解版
2008-10-11 XBMC-Remote远程媒体控制 v1.0 破
2008-10-11 TN5250-AS/400商用服务器 v1.1破
2008-10-11 TVForecast电视节目导航 v1.0 破
2008-10-11 Spend花销明细 v1.25 破解版
2008-10-11 SpaceEnvi空间画廊 v1.0.2 破解版
2008-10-11 VoiceDial语音拨号 v1.0 破解版
2008-10-11 SonicLighter神圣火焰杯 v1.0 破
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成