知识大全 多线程从线程继承
Posted 知
篇首语:谁和我一样用功,谁就会和我一样胜利。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 多线程从线程继承相关的知识,希望对你有一定的参考价值。
为创建一个线程 最简单的方法就是从Thread类继承 这个类包含了创建和运行线程所需的一切东西 Thread最重要的方法是run() 但为了使用run() 必须对其进行过载或者覆蓋 使其能充分按自己的吩咐行事 因此 run()属于那些会与程序中的其他线程 并发 或 同时 执行的代码 下面这个例子可创建任意数量的线程 并通过为每个线程分配一个独一无二的编号(由一个静态变量产生) 从而对不同的线程进行跟踪 Thread的run()方法在这里得到了覆蓋 每通过一次循环 计数就减 ——计数为 时则完成循环(此时一旦返回run() 线程就中止运行) //: SimpleThread java // Very simple Threading example public class SimpleThread extends Thread private int countDown = ; private int threadNumber; private static int threadCount = ; public SimpleThread() threadNumber = ++threadCount; System out println( Making + threadNumber); public void run() while(true) System out println( Thread + threadNumber + ( + countDown + ) ); if( countDown == ) return; public static void main(String[] args) for(int i = ; i < 5; i++) new SimpleThread().start(); System.out.println("All Threads Started"); run()方法几乎肯定含有某种形式的循环——它们会一直持续到线程不再需要为止。Tw.wINgwIt.因此,我们必须规定特定的条件,以便中断并退出这个循环(或者在上述的例子中,简单地从run()返回即可)。run()通常采用一种无限循环的形式。也就是说,通过阻止外部发出对线程的stop()或者destroy()调用,它会永远运行下去(直到程序完成)。 在main()中,可看到创建并运行了大量线程。Thread包含了一个特殊的方法,叫作start(),它的作用是对线程进行特殊的初始化,然后调用run()。所以整个步骤包括:调用构建器来构建对象,然后用start()配置线程,再调用run()。如果不调用start()——如果适当的话,可在构建器那样做——线程便永远不会启动。 下面是该程序某一次运行的输出(注意每次运行都会不同): 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) 可注意到这个例子中到处都调用了sleep(),然而输出结果指出每个线程都获得了属于自己的那一部分CPU执行时间。从中可以看出,尽管sleep()依赖一个线程的存在来执行,但却与允许或禁止线程无关。它只不过是另一个不同的方法而已。 亦可看出线程并不是按它们创建时的顺序运行的。事实上,CPU处理一个现有线程集的顺序是不确定的——除非我们亲自介入,并用Thread的setPriority()方法调整它们的优先级。 main()创建Thread对象时,它并未捕获任何一个对象的句柄。普通对象对于垃圾收集来说是一种“公平竞赛”,但线程却并非如此。每个线程都会“注册”自己,所以某处实际存在着对它的一个引用。这样一来,垃圾收集器便只好对它“瞠目以对”了。 cha138/Article/program/Java/gj/201311/27434相关参考
通过继承Thread创建多线程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!一个进程中可以包含一个
现在考虑一下创建多个不同的线程的问题我们不可用前面的例子来做到这一点所以必须倒退回去利用从Thread继承的多个独立类来封装run()但这是一种更常规的方案而且更易理解所以尽管前例揭示了我们经常都
Java多线程同步如何从JVM的角度体会 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 我们在使
创建线程 在Java程序中创建线程有几种方法每个Java程序至少包含一个线程主线程其它线程都是通过Thread构造器或实例化继承类Thread的类来创建的 Java线程可以通过直接
/** *authorannegu *date */ annegu做了一个简单的Http多线程的下载程序来讨论一下多线程并发下载以及断点续传的问题 这个程序的功能就是可以分多个线程从目标
Java语言规范中指出为了获得最佳速度允许线程保存共享成员变量的私有拷贝而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值对比 Volatile修饰的成员变量在每次被线程访问时都强迫从
尽管线程对象的常用方法可以通过API文档来了解但是有很多方法仅仅从API说明是无法详细了解的我们先来说一下线程对象的几个重要的方法 首先我们来说明start()方
尽管面临很多挑战多线程有一些优点使得它一直被使用这些优点是 ●资源利用率更好 ●程序设计在某些情况下更简单 ●程序响应更快 资源利用率更好 想象一下一个应用程序需要从本地文件系统中读取和
Java的多线程-实现多线程及线程的同步 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一.实现
Java多线程编程基础之线程和多线程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 随着计算机技