知识大全 多线程从线程继承

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创建多线程

通过继承Thread创建多线程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!一个进程中可以包含一个

知识大全 制作多个线程

  现在考虑一下创建多个不同的线程的问题我们不可用前面的例子来做到这一点所以必须倒退回去利用从Thread继承的多个独立类来封装run()但这是一种更常规的方案而且更易理解所以尽管前例揭示了我们经常都

知识大全 Java多线程同步如何从JVM的角度体会

Java多线程同步如何从JVM的角度体会  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  我们在使

知识大全 java线程简介(线程的生命)

  创建线程      在Java程序中创建线程有几种方法每个Java程序至少包含一个线程主线程其它线程都是通过Thread构造器或实例化继承类Thread的类来创建的    Java线程可以通过直接

知识大全 用java多线程断点续传实践

  /**  *authorannegu  *date  */  annegu做了一个简单的Http多线程的下载程序来讨论一下多线程并发下载以及断点续传的问题  这个程序的功能就是可以分多个线程从目标

知识大全 java的volatile与多线程

  Java语言规范中指出为了获得最佳速度允许线程保存共享成员变量的私有拷贝而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值对比  Volatile修饰的成员变量在每次被线程访问时都强迫从

知识大全 java 多线程 完全版

  尽管线程对象的常用方法可以通过API文档来了解但是有很多方法仅仅从API说明是无法详细了解的我们先来说一下线程对象的几个重要的方法   首先我们来说明start()方

知识大全 多线程的优点和代价

  尽管面临很多挑战多线程有一些优点使得它一直被使用这些优点是  ●资源利用率更好  ●程序设计在某些情况下更简单  ●程序响应更快  资源利用率更好  想象一下一个应用程序需要从本地文件系统中读取和

知识大全 Java的多线程-实现多线程及线程的同步

Java的多线程-实现多线程及线程的同步  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一.实现

知识大全 Java多线程编程基础之线程和多线程

Java多线程编程基础之线程和多线程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  随着计算机技