Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

Java入门(13) More Java!

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

  接下来,我们看一下testThread.java程序,这才是我们执行时的主体部分:

  3)


public static void main (String argv[])
{
inApplet=false;
if (argv.length>0)
racerCount = Integer.parseInt(argv[0]);
Frame theFrame = new Frame("The Great Thread Race");
testThread theRace = new testThread();
theFrame.setSize(400,200);
theFrame.add ("Center",theRace);
theFrame.show();
theRace.init();
theFrame.pack();
theRace.start();
}

  这个程序执行时,首先将运行这个main方法。然后通过判断argv.length是否大于0,如果大于0,就将执行时所带的参数赋给racerCount(参赛人数),否则就为3(在程序的开始处有定义。

  然后创建一个Frame,然后调用init()和start()方法。

  一些提示:

  注意,在这里我们创建一个testThread类的对象theRace,通过它来调用。

  4)


for (int x=0;x

  在theRace的init()方法中,最主要的部分就是这个for循环。通过这个循环我们创建了racerCount个Threader(竞赛者),并将它们命名为“Racer #x”,然后设置它的高度(整个Frame的高度/竞赛者数)。最后调用Frame的add方法将它们显示出来。

  然后为每一个竞赛者(Threader)创建一个线程Thread。也就是说为每一个竞赛者创建一个线程,用这个线程来控制它。

  一切就绪之后,我们就要开始“赛跑”了。

  5)


public void start()
{
for (int x=0;x

  接下来,我们调用了theRace的start()方法,我们看到在这个方法中,我将启动了“控制”所有参赛者的线程。(调用Thread的start方法)

  多线程编程是相当复杂的,本书中仅给大家整理一下思路,做一些简要的介绍,大家可以阅读一些更高级的Java书籍,来更深入地学习。

  自测练习

  1) 以下关于进程的说法中,____________是正确的。

  a.就是程序 b.一个运行中的程序 c.由线程组成

  2) 以下关于线程的说法中,____________是正确的。

  a.是一种轻量线进程 b.一个进程中只能有一个线程

  c.每个线程都有自己的地址空间

  3) Java语言中有两种方法实现多线程,它们是__________、 ____________。

  a.继承Thread类 b.继承Threader类

  c.使用Runnable接口 d.使用Thread接口

  4) 最常使用的多线程实现方法是__________。

  a.继承Thread类 b.继承Threader类

  c.使用Runnable接口 d.使用Thread接口

  请说明理由:

  ____________________________________________________________________

  ____________________________________________________________________

  5) ___________不属于线程的状态:

  a.运行态 b.完成态 c.就绪态 d.阻塞态

  6) 请描述出使用Runnable接口实现多线程的步骤:

  ____________________________________________________________________

  ____________________________________________________________________

  ____________________________________________________________________

  7) 如果我们使用java testThread a来执行这个程序的话,就会出错,请问这是为什么?请说明:

  ____________________________________________________________________

  ____________________________________________________________________

  练习答案

  1)b 并不是所有的进程都是由多个线程组成的。进程是程序的一个运行实例,它与程序是不等价的。

  2)a 在支持线程的系统中,我们可以在一个进程中细分出多个线程,但并不是说每一个进程中都有多个线程。在一个进程中的线程是共享地址空间的。线程,也称为轻量级进程。

  3)a、c 有两种方法,分别是继承Thread类,以及使用Runnable接口。

  4)c 最常用的方法是使用Runnable接口。

  这是因为,我们经常需要继承其它类,而Java又不支持多重继承,所以使用继承Thread类有很大的局限性。

  5)b 当一个线程完成后,就释放了,并不存在一个完成态。

  6)第一步:在类的定义后加上implements Runnable,以使用Runnable接口;第二步:重写定义一个run()方法,定义线程要做的事情。

  7)将会出错。这是因为我们希望参数是竞赛者的人数,也就是需要整型数,而不是字符型。如果输入字符型就会造成程序出错。

  13.4 JavaBeans

  13.4.1 什么是组件(部件)技术

  传授新知

  通常,我们开发一个应用软件时,都是事先经过需求分析、设计,然后开发出所需的软件。在这个软件系统中,各种功能、特性用固定的方法联系在一起。但是,软件的组成部分大多无法独立地删除、升级。

  这样造成的结果就是,不同的应用程序即使用同一种编程语言,在同一台机器上使用,也无法互相利用,它们之间就象是陌路人一样。

  另外,由于操作系统不同,使得在不同的操作系统上完成一个相同的工作,往往实现的方法也就不同。尽管,国际上有许多标准化组织制定了许多规范来减少各个操作系统的开发接口的不同,但是这也只能够是一个权宜之计。

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:Java入门(11) 让程序更动人   下一篇:JSP 技术白皮书

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号