首页 > 编程语言 > 详细

Java ----- 线程(Thread)(二)简单使用

时间:2020-09-09 08:37:25      阅读:84      评论:0      收藏:0      [点我收藏+]

Java程序中的 public static void main()  方法时主线程的入口,当运行Java程序时,会先执行这个方法。

注意:

(1)、每个程序至少自动拥有一个线程,称为主线程。

(2)、当程序加载到内存时启动主线程。

(3)、开发中用户编写的线程一般是指除了主线程之外的其他线程。

使用一个线程的主要步骤:

(1)、定义一个线程,同时指明这个线程索要执行的代码,即期望完成的功能

(2)、创建线程对象

(3)、启动线程

(4)、终止线程

Thread 类常用的方法:

java 提供了java.lang.Thread 类支持多线程编程,该类提供了大量的方法来控制和操作线程,如下

技术分享图片

定义一个线程类常见的两种方法:继承java.lang.Thread 类和实现java.lang.Runnable 接口

1、使用Thread 类创建线程

创建线程时继承Thread 类并重写Thread类的run 方法。Thread 类的run 方法是线程要执行操作任务的方法,所以线程要执行的操作代码都需要写在run() 方法中,并通过调用start() 方法来启动线程。

使用继承Thread 类的方式创建线程主要步骤 

(1)、定义一个类继承Thread 类,重写run 方法,

(2)、重写run 方法,并在方法中写需要输出的数据

(3)、创建线程对象

(4)、调用start() 方法启动线程

技术分享图片

 注意:创建对象时不会执行线程,必须调用线程对象的start() 方法才会使线程开始运行。

技术分享图片

package com.obge.threadstu;

public class ThreadStu extends Thread {

    private int icount =0;
    //重写run 方法
    public void run(){
//        while(icount <5){
//            icount ++;
//            System.out.println("while的值:"+icount);
//        }

        do{
            icount ++;
            System.out.println("do_while的值:"+icount);
        }while (icount<4);

//        for(;icount<3;icount++){
//            System.out.println("for的值:"+icount);
//        }


    }

}



package com.obge.threadstu;

public class TestThread {
    public static void main(String[] args) {
        //实例化线程对象
        ThreadStu threadStu = new ThreadStu();
        threadStu.start();
    }


}

 

缺点:虽然,使用继承Thread的方式简单明了,但是如果定义的类已经继承了其他类则无法在继承Thread 类。所以引入了另一种方式实现Runnable 接口创建线程

2、使用Runnable 接口创建线程

Runnable 接口中声明了一个run()方法(即public void run() )

技术分享图片

一个类可以通过实现Runnable 接口并实现其 run() 方法完成线程的所有活动,其中以实现的run() 方法称为该对象的线程体。任何实现Runnable 接口的对象都可以作为一个线程的目标对象。

使用实现Runnable 接口方式创建对象的主要步骤:

(1)、定义一个类实现java.lang.Runnable 接口

(2)、实现该接口的run()方法,并在方法中写需要输出的数据

(3)、创建线程对象

(4)、调用start() 方法启动线程

技术分享图片

使借助Thread thread = new Thread( new RunnableStu());创建对象

package com.obge.threadstu;

public class RunnableStu implements Runnable{
    //重写注解  一个内建注解
    @Override
    public void run() {
        for(int i = 0;i<3;i++){
            System.out.println("for的值:"+i);
        }

    }
}

package com.obge.threadstu;

public class TestThread {
    public static void main(String[] args) {
        //实例化线程对象
        //ThreadStu threadStu = new ThreadStu();
        Thread thread = new Thread( new RunnableStu());
        thread.start();
    }


}

 

两种方式比较:

直接继承Thread 类的方式编写简单,可以直接操作线程,适合单重继承的情况

实现Runnable接口方式,当一个线程继承另一个类时,只能实现Runnable 接口的方法创建线程,而且还可以使多个线程之间使用同一个Runnable对象(因为java 只能单继承,可以实现多个接口)

 

Java ----- 线程(Thread)(二)简单使用

原文:https://www.cnblogs.com/obge/p/13636383.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!