JAVA多线程Thread和Runnable的实现

 更新时间:2013年03月17日 12:11:01   作者:  
java中实现多线程有两种方法:一种是继承Thread类,另一种是实现Runnable接口。

java中只允许单一继承,但允许实现多个接口,因此第二种方法更灵活。

复制代码 代码如下:

/**
     * 运行继承java.lang.Thread类定义的线程
     */
    public void startOne() {
        // 创建实例
        OneThread oneThread = new OneThread();
        // 启动线程ThreadA
        oneThread.startThreadA();
        try {
            // 设置线程休眠1秒
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        // 停止线程,此处为什么不用stop()方法,因为该方法已经废弃,但可以用在死锁。
        oneThread.stopThreadA();
    }

复制代码 代码如下:

/**
     * 运行实现Runnable接口定义的线程
     */
    public void startTwo() {
        // 创建实例
        Runnable runnable = new TwoThread();
        // 将实例放入到线程中
        Thread threadB = new Thread(runnable);
        // 启动线程
        threadB.start();
    }

复制代码 代码如下:

// 继承Thread类定义线程
class OneThread extends Thread {
    private boolean running = false;

    public void start() {
        this.running = true;
        super.start();
    }
    public void run() {
        int i = 0;
        try {
            while (running) {
                System.out.println("继承Thread类定义线程程序体......" + i++);
                Thread.sleep(200);
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    public void startThreadA() {
        System.out.println("启动继承Thread类定义线程");
        this.start();
    }
    public void stopThreadA() {
        System.out.println("关闭继承Thread类定义线程");
        this.running = false;
    }
}

复制代码 代码如下:

// 实现Runnable接口定义线程
class TwoThread implements Runnable {
    private Date runDate;

    public void run() {
        System.out.println("实现Runnable接口定义线程程序体......");
        this.runDate = new Date();
        System.out.println("线程启动时间......" + runDate);
    }

复制代码 代码如下:

public static void main(String[] args) {
        // 实例化对象
        ThreadStartAndStop threadStartAndStop = new ThreadStartAndStop();
        threadStartAndStop.startOne();
        threadStartAndStop.startTwo();
    }

 启动继承Thread类定义线程
继承Thread类定义线程程序体......0
继承Thread类定义线程程序体......1
继承Thread类定义线程程序体......2
继承Thread类定义线程程序体......3
继承Thread类定义线程程序体......4
关闭继承Thread类定义线程
实现Runnable接口定义线程程序体......
线程启动时间......Fri Mar 15 12:56:57 CST 2013

相关文章

  • Java Vector和ArrayList的异同分析及实例讲解

    Java Vector和ArrayList的异同分析及实例讲解

    在本篇文章里小编给大家整理的是一篇关于Java Vector和ArrayList的异同分析及实例讲解内容,有兴趣的朋友们可以学习参考下。
    2021-01-01
  • 简单了解java自定义和自然排序

    简单了解java自定义和自然排序

    这篇文章主要介绍了简单了解java自定义和自然排序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • 详解JAVA动态代理

    详解JAVA动态代理

    这篇文章主要介绍了JAVA动态代理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Java使用list集合remove需要注意的事项(使用示例)

    Java使用list集合remove需要注意的事项(使用示例)

    List集合的一个特点是它其中的元素是有序的,也就是说元素的下标是根据插入的顺序来的,在删除头部或者中间的一个元素后,后面的元素下标会往前移动,本文给大家介绍Java使用list集合remove需要注意的事项,感兴趣的朋友一起看看吧
    2022-01-01
  • Java 集合框架 Queue 和 Stack 体系

    Java 集合框架 Queue 和 Stack 体系

    这篇文章主要介绍了Java 集合框架Queue和Stack体系,Stack 继承自Vector,并拓展了五个允许将容器视为栈结构的操作,Queue接口定义了队列的能力,它继承自Collection,更多相关内容需要得小伙伴可以参考一下
    2022-06-06
  • Java多线程、进度条实现赛马实验的示例代码

    Java多线程、进度条实现赛马实验的示例代码

    这篇文章主要介绍了Java多线程、进度条实现赛马实验的示例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Java GUI进阶之流式布局管理器FlowLayout专项精讲

    Java GUI进阶之流式布局管理器FlowLayout专项精讲

    FlowLayout-流式布局管理器,按水平方向依次排列放置组件,排满一行,换下一行继续排列。排列方向(左到右 或 右到左)取决于容器的componentOrientation属性
    2022-04-04
  • SpringBoot实现反向代理的示例代码

    SpringBoot实现反向代理的示例代码

    本文主要介绍了SpringBoot实现反向代理的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Java的Junit测试框架中的其他注解说明

    Java的Junit测试框架中的其他注解说明

    这篇文章主要介绍了Java的Junit测试框架中的其他注解说明,JUnit是一个开源的java单元测试框架,它是XUnit测试体系架架构的一种体现,
    是Java语言事实上的标准单元测试库,需要的朋友可以参考下
    2023-10-10
  • spring security自定义登录页面

    spring security自定义登录页面

    在项目中我们肯定不能使用Spring自己生成的登录页面,而要用我们自己的登录页面,下面通过本文给大家分享spring security自定义登录页面的实现方法,一起看看吧
    2017-09-09

最新评论