精华内容
下载资源
问答
  • 通过继承Thread类来创建并启动多线程的步骤如下。➊定义Thread的子类,并重写该的run()方法,该run()方法的方法体就代表了线程需要完成的任务。因此把run()方法称为线程执行体。❷创建Thread子类的实例,即创建...

    通过继承Thread类来创建并启动多线程的步骤如下。

    ➊定义Thread类的子类,并重写该类的run()方法,该run()方法的方法体就代表了线程需要完成的任务。因此把run()方法称为线程执行体。

    ❷创建Thread子类的实例,即创建了线程对象。

    ❸调用线程对象的start()方法来启动该线程。

    下面程序示范了通过继承Thread类来创建并启动多线程。

    //通过继承Thread类来创建线程类

    publicclassFirstThreadextendsThread

    {

    privateinti;

    //重写run方法,run方法的方法体就是线程执行体

    publicvoidrun()

    {

    for(;i<100;i++)

    {

    //当线程类继承Thread类时,可以直接调用getName()方法来返回当前线程的名。

    //如果想获取当前线程,直接使用this即可

    //Thread对象的getName返回当前该线程的名字

    System.out.println(getName()+" "+i);

    }

    }

    publicstaticvoidmain(String[]args)

    {

    for(inti=0;i<100;i++)

    {

    //调用Thread的currentThread方法获取当前线程

    System.out.println(Thread.currentThread().getName()+" "+i);

    if(i==20)

    {

    //创建、并启动第一条线程

    newFirstThread().start();

    //创建、并启动第二条线程

    newFirstThread().start();

    }

    }

    }

    }

    运行实例 »

    上面程序中的FirstThread类继承了Thread 类,并实现了run()方法,如程序中第一段粗体字代码所示,该run()方法里的代码执行流就是该线程所需要完成的任务。程序的主方法中也包含了一个循环,当循环变量i等于20时创建并启动两个新线程。你可以点击上面的运行按钮。虽然上面程序只显式地创建并启动了2个线程,但实际上程序有3个线程,即程序显式创建的2个子线程和主线程。前面已经提到,当Java程序开始运行后,程序至少会创建一个 主线程,主线程的线程执行体不是由run(0方法确定的,而是由main0方法确定的一main0方法的方法体代表 主线程的线程执行

    体。

    注意

    1.进行多线程编程时不要忘记了Java程序运行时默认的主线程, main()方法的方法体就是主线程的线程执行体。

    2.使用继承Thread类的方法来创建线程类时,多个线程之间无法共享线程类的实例变量。

    除此之外,上面程序还用到 了线程的如下两个方法。

    ➢Thread.currentThread(): currentThread()是 Thread类的静态方法,该方法总是返回当前正在执行的线程对象。

    ➢getName(): 该方法是Thread类的实例方法,该方法返回调用该方法的线程名字。

    程序可以通过setName(String name)方法为线程设置名字,也可以通过getName()方法返回指定线程的名字。在默认情况下,主线程的名字为main, 用户启动的多个线程的名,字依次为Thread-0. Thread-1. Thread-2. ….. Thread-n等。

    展开全文
  • 本文实例讲述了Java继承Thread类创建线程。分享给大家供大家参考,具体如下:一 点睛通过继承Thread类创建线程并启动多线程的步骤:1 定义Thread的子类,并重写该的run()方法,该run()方法的方法体代表了线程...

    本文实例讲述了Java继承Thread类创建线程类。分享给大家供大家参考,具体如下:

    一 点睛

    通过继承Thread类创建线程并启动多线程的步骤:

    1 定义Thread的子类,并重写该类的run()方法,该run()方法的方法体代表了线程需要完成的任务。因此run()方法称为线程执行体。

    2 创建Thread子类的实例,即创建子线程对象。

    3 调用线程对象的start()方法来启动该线程。

    二 代码

    // 通过继承Thread类来创建线程类

    public class FirstThread extends Thread

    {

    private int i ;

    // 重写run方法,run方法的方法体就是线程执行体

    public void run()

    {

    for ( ; i < 100 ; i++ )

    {

    // 当线程类继承Thread类时,直接使用this即可获取当前线程

    // Thread对象的getName()返回当前该线程的名字

    // 因此可以直接调用getName()方法返回当前线程的名

    System.out.println(getName() + " " + i);

    }

    }

    public static void main(String[] args)

    {

    for (int i = 0; i < 100; i++)

    {

    // 调用Thread的currentThread方法获取当前线程

    System.out.println(Thread.currentThread().getName()

    + " " + i);

    if (i == 20)

    {

    // 创建、并启动第一条线程

    new FirstThread().start();

    // 创建、并启动第二条线程

    new FirstThread().start();

    }

    }

    }

    }

    三 运行

    ......

    main 20

    main 21

    main 22

    Thread-0 0

    main 23

    Thread-1 0

    main 24

    Thread-0 1

    main 25

    Thread-1 1

    main 26

    Thread-0 2

    main 27

    Thread-1 2

    main 28

    ......

    四 说明

    1 虽然程序只显示地创建并启动了2个线程,但实际上有3个线程,因为还有一个主线程。main()方法的方法体代表主线程的线程执行体。

    2 Thread-0和Thread-1两个线程输出的i变量不连续。这是因为每次创建线程对象都需要创建一个FirstThread对象,所以Thread-0和Thread-1不能共享该实例变量。

    3 使用继承Thread类的方法来创建线程时,多个线程之间无法共享线程类的实例变量。

    更多java相关内容感兴趣的读者可查看本站专题:《Java进程与线程操作技巧总结》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

    希望本文所述对大家java程序设计有所帮助。

    展开全文
  • java中通过继承thread类实现多线程难点与解决方案篇一:Java作业—利用继承Thread类创建三个线程《Java语言》课程作业(第二次)题 目学 院专 业班 别学 号姓 名2010年11月30日一、课程题目6、 利用继承Thread类创建三...

    java中通过继承thread类实现多线程难点与解决方案

    篇一:Java作业—利用继承Thread类创建三个线程

    《Java语言》课程作业

    (第二次)

    题 目学 院

    专 业

    班 别

    学 号

    姓 名

    2010年11月30日

    一、课程题目

    6、 利用继承Thread类创建三个线程,线程1输出三个“good morning!”,线程2输出三个“good afternoon!”,线程3输出三个“good night!”,每个线程输出一次后休眠100s。在main主线程中创建并启动这三个线程。

    二、题目分析与设计

    Java中实现多线程有两种途径:继承Thread类或者实现Runnable接口。本题使用继承Thred类run ()方法实现多线程技术。

    首先设计一个继承类ExtendsThread,添加继承Thread基类的实现,定义一个字符串的参数字段hello,该字段在ExtendsThread实例化的同时获取方法参数,如:“good morning!”“good night!”“good afternoon!”,在ExtendsThread类中实现基类Thread的run()方法,使用for循环调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到spu时间片,就开始执行run()方法,该方法主要功能输出三个hello字段的字符串,当线程调用了自身的sleep()方法,就会进入阻塞状态(该状态既停止当前线程,但并不释放所占有的资源,当sleep()结束,该线程进入可运行状态,继续等待OS分配时间片;

    程序集与类视图如下:

    本程序开发环境:Eclipse

    三、测试分析

    四、实验总结和心得

    java中多线程就是一个类或一个程序执行或管理多个线程执行任务的能力,每个线程可以独立于其他线程而独立运行,当然也可以和其他线程协同运行,一个类控制着它的所有线程,可以决定哪个线程得到优先级,哪个线程可以访问其他类的资源,哪个线程开始执行,哪个保持休眠状态。Java中实现多线程有两种途径:继承Thread类或者实现Runnable接口。Runnable是接口,接口可以实现多继承,况且Runnable只有一个run方法,很适合继承。在使用Thread的时候只需继承Thread,并且new一个实例出来,调用start()方法即可以启动一个线程。

    通过了实验了解了JAVA线程创建,可运行,运行中,阻塞,死亡五中状态的使用技巧,掌握多线程的基本技术,当然还有很多地方需要更多实践和更深刻的认识。

    附录:源代码

    import java.util.*;

    import java.text.*;

    import java.lang.Thread;

    public class ExtendsThread extends Thread{

    private String hello;

    public ExtendsThread(String hello)

    {

    this.hello=hello;

    }

    public void run()

    {

    try

    {

    for(int i=0; i<3; ++i )

    {

    Date now = new Date();

    DateFormat d1 = DateFormat.getDateTimeInstance(); String nowtime = d1.format(now);

    System.out.println(this.getName()+ ':'+this.hello+

    毕时间:+nowtime);

    sleep(1000*100);

    }

    }

    catch(Exception e)

    {

    e.printStackTrace();

    System.out.println(消息:+e.getMessage());

    }

    }

    public static void main(String[] args)

    {

    ExtendsThread thread1 = new ExtendsThread(good morning! ); ExtendsThread thread2 = new ExtendsThread(good afternoon!); ExtendsThread thread3 = new ExtendsThread(good night! ); thread1.setName(线程一);

    thread2.setName(线程二);

    thread3.setName(线程三);

    thread1.start();

    thread2.start();

    t

    展开全文
  • 同步代码块解决继承Thread类的线程安全问题 与用同步代码块解决实现Runnable接口创建线程的安全问题的 不同之处在于:①不能使用this来充当同步监视器 ②要在创建对象的前面加上static,以保证唯一性 Eg:不能写成 ...

    同步代码块解决继承Thread类的线程安全问题

    与用同步代码块解决实现Runnable接口创建线程的安全问题的
    不同之处在于:①不能使用this来充当同步监视器
    ②要在创建对象的前面加上static,以保证唯一性
    Eg:不能写成 Object obj = new Object();
    应写成 static Object obj = new Object();
    即要他们共用一把“锁”

    package com.xianchengtest.bean;
    
    public class Test {
        public static void main(String[] args) {
            Thread6 t1 = new Thread6();
            Thread6 t2 = new Thread6();
            Thread6 t3 = new Thread6();
            t1.setName("窗口一");
            t2.setName("窗口二");
            t3.setName("窗口三");
            t1.start();
            t2.start();
            t3.start();
        }
    }
    class Thread6 extends Thread {
        private static int ticket = 100;
        private static final Object obj = new Object();
        public void run() {
            while (true) {
                synchronized (obj) {   
                    if (ticket > 0) {
                        try {
                            Thread.sleep(10);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        System.out.println(getName() + "卖的票号为:" + ticket);
                        ticket--;
                    } else {
                        break;
                    }
                }
            }
        }
    }
    
    
    展开全文
  • 继承Thread类如何创建一个线程呢?方式一:继承Thread方法步骤:1,定义一个类继承Thread类。2, 覆写Thread中的run()方法。3, 调用线程的start方法。可以通过Thread的getName()方法获取线程的名称。static ...
  • 那么这个时候我们如果是使用非静态方法的的默认(也就是this关键字的方式不可以真正的解决继承Thread类的方式创建的线程的安全问题),因为我们继承Thread类的方式创建的多线程之间没有天然的资源共享,这个
  • 1、创建线程的方式线程创建方式是:继承 Thread ,重写 run 方法。如下:public class Task extends Thread{@Overridepublic void run() {System.out.println("线程执行了");}}客户端使用如下,使用线程对象的...
  • 当我们做这个系统的时候可能会想到两种方式来实现,继承Thread类或实现Runnable接口,现在看一下这两种方式实现的两种结果。Java 代码packagecom.threadtest;class MyThread extendsThread{private int ticket = 10;...
  • 通过继承Thread类与实现Runnable接口实现多线程以及两者的区别 实现多线程代码有两种方式:一种是继承Thread类;另一种是实现Runnable接口(JDK1.5之后有新的接口Callable) 继承Thread类 Thread子类中必须明确地...
  • 标签:创建和启动线程的两种传统方式:Java提供了线程类Thread来创建多线程的程序。其实,创建线程与创建普通的的对象的操作是一样的,而线程就是Thread类或其子类的实例对象。每个Thread对象描述了一个单独的线程...
  • Java编程--多线程(继承Thread类和实现Runnable接口)一. 通过继承Thread类//线程操作主类class MyThread extends Thread {private String name;public MyThread(String name) {this.name = name;}@Overridepublic ...
  • 创建多线程-继承Thread类、实现Runnable接口
  • 1) 自定义的线程类继承Thread类 2) 重写run()方法,编写线程执行体 3) 创建线程对象,调用start()方法启动线程。 实例——多线程下载图片 目标:实现多线程下载网页上的图片到本地 导入的包:comm.
  • JAVA学习第二十二课(多线程(二))- (多线程的创建方式一 :继承Thread类)。线程是程序中的执行线程。Java 虚拟机允许应用程序并发地运行多个执行线程。创建新执行线程有两种方法。一种方法是将声明为 Thread 的子类...
  • 通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中2.通过实现Runnable接口,实例化Thread一、通过继承Thread类实现多线程class MyThread extends Thread{String name = null;int ticket = 0;...
  • 如下面例子,用继承Thread类实现的多线程,实现这个多线程时是各自处理各自的对象(一对一),即t1对应一个start,t2对应一个start,t3对应一个start。 package com.pilgrims.demo1; import org.apache.commons.io...
  • 继承Thread类,重写run()方法 package com.qinayu.thread; public class TestThread extends Thread{ //继承Thread类 //重写run方法 @Override public void run() { for (int i = 0; i < 20; i++) { //20....
  • 创建线程方法一:继承Thread类3. 创建线程方法二:实现Runnable接口三、继承Thread类&&多线程机制1. 示例代码--继承Thread类2. JConsole监控线程执行情况3. 多线程示意图4. 多线程总结5. 为什么执行start()...
  • 通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中2.通过实现Runnable接口,实例化Thread在实际应用中,我们经常用到多线程,如车站的售票系统,车站的各个售票窗口相当于各个线程。当我们做这...
  • 前言在Android开发中,多线程的使用十分常见今天,我将全面解析多线程其中一种常见用法:继承Thread类。目录示意图1. 简介示意图2. 使用讲解2.1 使用步骤示意图2.2 具体使用// 步骤1:创建线程 (继承自Thread)...
  • 线程(thread):进程可进一步细化为线程,是一个程序内部的一条执行路径。 线程作为调度和执行的单位,每个线程拥独立的运行栈和程序计数器(pc),线程切换的开销小。 并行:多个CPU同时执行多个任务。 并发:一个CPU...
  • 当我们做这个系统的时候可能会想到两种方式来实现,继承Thread类或实现Runnable接口,现在看一下这两种方式实现的两种结果。Java代码packagecom.threadtest;classMyThreadextendsThread{privateintticket=10;...
  • Java-多线程-继承Thread类创建线程 在Java中,创建子线程的一种方式就是让一个类继承Thread类 一个在继承自Thread之后,还必须要重写run方法,实现的业务逻辑必须写在run方法中才能创建子线程 创建的子线程对象不...
  • 继承Thread类继承Thread类,再重写Thread的Run方法,然后调用start()方法启动线程,启动线程后执行的是run方法。注意:多次启动线程(多次调用start()方法)是不合法的。实现Runnable接口:实现Runnable接口,再...
  • 线程代码存放在接口的子类的run方法中*实现方式的好处:避免了单继承的局限性*在定义线程时,建议使用实现方式,当然如果一个没有继承父类,那么也可以通过继承Thread类来实现多线程*注意:Runnable接口没有抛出...
  • 1.继承Thread 步骤: 定义Thread的子类,并重写该的run()方法,该run()方法的方法体就代表了线程需要完成的任务,因此把run()方法称为线程执行体。 创建Thread子类的实例,即创建了线程对象。 调用线程对象的...
  • Java 多线程,Java创建线程4种方式,Java 四种方式创建线程 实现Runnable 接口和继承 Thread的区别 ==========================...1、继承Thread类 public class Threadable extends Thread{ @Override ...
  • 继承Thread类实现多线程 Thread本质上也是实现了Runnable接口的一个,启动线程的唯一方法就是通过Thread的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。这种方式...
  • thread 详解

    千次阅读 2021-03-04 01:20:01
    java.lang.Thread类详解一、前言位于java.lang包下的Thread类是非常重要的线程,它实现了Runnable接口,今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知识:线程的几种状态、上下文切换,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 189,985
精华内容 75,994
关键字:

继承thread的类的this锁