日期:2011-03-22 16:16:00 来源:本站整理
<b>从线程承当(java)</b>[Java编程]
本文“<b>从线程承当(java)</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
为成立一个线程,最简单的办法就是从Thread类担当.这个类包含了成立和运行线程所需的一切东西.Thread最重要的办法是run().但为了利用run(),必须对其举行过载大概覆盖,使其能充分按自己的叮嘱行事.因此,run()属于那些会与程序中的其他线程“并发”或“同时”履行的代码.
下面这个例子可成立肆意数目的线程,并通过为每个线程分配一个举世无双的编号(由一个静态变量产生),从而对差别的线程举行跟踪.Thread的run()办法在这里得到了覆盖,每通过一次循环,计数就减1——计数为0时则完成循环(此时一旦返回run(),线程就中止运行).
//: SimpleThread.java // Very simple Threading example public class SimpleThread extends Thread { private int countDown = 5; private int threadNumber; private static int threadCount = 0; public SimpleThread() { threadNumber = ++threadCount; System.out.println("Making " + threadNumber); } public void run() { while(true) { System.out.println("Thread " + threadNumber + "(" + countDown + ")"); if(--countDown == 0) return; } } public static void main(String[] args) { for(int i = 0; i < 5; i++) new SimpleThread().start(); System.out.println("All Threads Started"); } } ///:~
run()办法几近必定含有某种情势的循环——它们会一向持续到线程不再需求为止.因此,我们必须规定特定的条件,以便中止并退出这个循环(大概在上述的例子中,简单地从run()返回便可).run()普通采取一种无限循环的情势.也就是说,通过禁止外部发出对线程的stop()大概destroy()调用,它会永久运行下去(直到程序完成).
在main()中,可看到成立并运行了大量线程.Thread包含了一个特别的办法,叫作start(),它的作用是对线程举行特别的初始化,然后调用run().所以整个步骤包含:调用构建器来构建对象,然后用start()配置线程,再调用run().假如不调用start()——假如得当的话,可在构建器那样做——线程便永久不会启动.
下面是该程序某一次运行的输出(注意每次运行城市差别):
可注意到这个例子中处处都调用了sleep(),但是输出后果指出每个线程都得到了属于自己的那一部份CPU履行时间.从中可以看出,固然sleep()依靠一个线程的存在来履行,但却与答应或禁止线程无关.它只不过是另一个差别的办法罢了.Making 1 Making 2 Making 3 Making 4 Making 5 Thread 1(5) Thread 1(4) Thread 1(3) Thread 1(2) Thread 2(5) Thread 2(4) Thread 2(3) Thread 2(2) Thread 2(1) Thread 1(1) All Threads Started Thread 3(5) Thread 4(5) Thread 4(4) Thread 4(3) Thread 4(2) Thread 4(1) Thread 5(5) Thread 5(4) Thread 5(3) Thread 5(2) Thread 5(1) Thread 3(4) Thread 3(3) Thread 3(2) Thread 3(1)
亦可看出线程并非按它们成立时的次序运行的.事实上,CPU处理一个现有线程集的次序是不肯定的——除非我们亲身参与,并用Thread的setPriority()办法调整它们的优先级.
main()成立Thread对象时,它并未捕捉任何一个对象的句柄.普通对象关于垃圾汇集来说是一种“公道比赛”,但线程却并非如此.每个线程城市“注册”自己,所以某处实际存在着对它的一个引用.这样一来,垃圾汇集器便只好对它“瞠目以对”了.
以上是“<b>从线程承当(java)</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
- ·上一篇文章:针对用户界面的多线程
- ·下一篇文章:线程为什么会堵塞
- ·中查找“<b>从线程承当(java)</b>”更多相关内容
- ·中查找“<b>从线程承当(java)</b>”更多相关内容
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论