java线程的两种实现方式

方式一:通过继承Thread 类实现

实现步骤:

  1. 创建新的类继承Thread类
  2. 在新的类中重写run()方法来描述线程的任务信息
  3. 创建新类对象调用Thread类中的start()方法来开启线程

示例代码如下:

/**
 * java 线程实现方式一 ,继承Thread 类
 */
public class ThreadDemo1 {
    //java  会把main方法中内容放入主线程中(交给CPU)运行
    //当程序运行时会把main方法中的内容交给底层的主线程来执行
    public static void main(String[] args) {
        //创建代表线程的类的对象
        TDemo t =  new TDemo();
        //开启线程
        //t.start();(2个线程:主线程+t 对象的线程)
        //调用TDemo 中的run 方法,相当于都是主线程的东西
        //并没有开启线程,就是执行主线程(只有一个主线程,没有体现出多线程)
        t.run();

        //线程不会回头执行
        for (int i=20;i>0;i--){
            System.out.println("main:"+i);
            try {
                Thread.sleep(20);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

//代表线程的类--描述线程的任务信息
class TDemo extends Thread{
    //重写方法
    //线程具体任务信息在方法中进行描述
    @Override
    public void run() {
        for(int i = 10;i>=0;i--){
            System.out.println("i"+i);
            //线程休眠
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

方式二:通过实现Runnable接口来实现

实现步骤:

  1. 创建新类实现Runnable接口
  2. 在新类中重写run()方法来描述线程的任务信息
  3. 利用装饰者模式来构建Thread类的对象
  4. 通过Thread类的对象去调用start()方法,开启线程

示例代码如下:

/**
 * java 线程的实现方式二  实现Runnable 接口
 */
public class RunnableDemo {
    public static void main(String[] args) {
        //创建代表线程类对象
        //RDemo r = new RDemo();
        //创建线程对象---装饰者(Thread和RDemo都是Runnable实现类,
        // 是同类对象给本类对象提供新的功能---装饰者设计模式)
        Thread t = new Thread(new RDemo());
        //Thread 类提供开启线程的方法
        t.start();

        //主线程方法
        for (int i=20;i>0;i--){
            System.out.println("main:"+i);
            try {
                Thread.sleep(20);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

//定义代表线程的类,描述线程的任务信息
class RDemo implements Runnable{
    //重写run方法--描述线程的内容
    @Override
    public void run() {
        for (int i=10;i>0;i--){
            System.out.println("run:"+i);
            try {
                //java.lang.Thread ,不用导包,直接调用其静态方法
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值