线程

继承Thread类

步骤:
*   1.自定义类继承Thread类
*   2.重写Thread类中的run方法
*   3.调用线程的start方法
* 
package com.zrgj.thread;

/**
 * @Author jinliwei
 * @Date 2019/10/24 10:14
 **/
/*
*   继承Thread类
* */
public class ThreadDemo1 {
    /*
    * 步骤:
    *   1.自定义类继承Thread类
    *   2.重写Thread类中的run方法
    *   3.调用线程的start方法
    *
    * */
    public static void main(String[] args) {
        //线程命名的方式
        //1.通过get/set进行命名
//        Thread td = new Thread();
//        td.setName("张三");
//        String name = td.getName();
//        System.out.println(name);
//        System.out.println(td);

        //2.通过构造方法
//        Thread td = new Thread("李四");
//        System.out.println(td.getName());

        //3.通过子类的方式命名
//        ThreadDemo tt = new ThreadDemo();
//        tt.setName("张三");
//        System.out.println(tt.getName());

        //4.通过子类构造方法
//        ThreadDemo tt = new ThreadDemo("zhangsan");
//        System.out.println(tt.getName());



        //创建两个线程
        ThreadDemo td = new ThreadDemo("zhangsan");
        ThreadDemo tt = new ThreadDemo("lisi");

        //如果使用.run()方法,也会执行,但是会以单线程的方式执行
        //start()方法还在内部调用run方法
        td.start();
        tt.start();

        //主线程运行
        for (int i = 0 ;i<5;i++){
            System.out.println("主线程的运行:"+i);
        }
    }

    //自定义子类去继承Thread类
    static class ThreadDemo extends Thread{
        public ThreadDemo(String name) {
            super(name);
        }

        public ThreadDemo() {
        }

        @Override
        public void run() {
            for (int i=0;i<5;i++){
                System.out.println("子线程的运行:"+this.getName()+"..."+i);
            }
        }
    }
}

实现Runnable接口

步骤:
        1.定义类实现Runnable接口
        2.重写Runnable接口中的run方法,将线程要运行的代码放到该run方法中
        3.通过Thread类建立线程对象
        4.将Runnable接口的子类对象作为实际参数传给Thread构造函数
        5.调用Thread类中的start方法开启线程并调用Runnable接口中子类的run方法
package com.zrgj.thread;

/**
 * @Author jinliwei
 * @Date 2019/10/24 10:38
 **/

/*
* 2.实现Runnable接口
* */
public class ThreadDemo2 {
    /*
        步骤:
            1.定义类实现Runnable接口
            2.重写Runnable接口中的run方法,将线程要运行的代码放到该run方法中
            3.通过Thread类建立线程对象
            4.将Runnable接口的子类对象作为实际参数传给Thread构造函数
            5.调用Thread类中的start方法开启线程并调用Runnable接口中子类的run方法
    */

    public static void main(String[] args) {
        RunTest rt = new RunTest();
        //建立线程对象
        Thread td = new Thread(rt);
        Thread tt = new Thread(rt);

        //开启线程并调用run方法
        //start()方法内部调用run方法
        td.start();
        tt.start();



    }

    //定义类实现Runnable接口
    static class RunTest implements Runnable{
        private int tick = 10;


        //重写Runnable接口中的run方法,将线程要运行的代码放到该run方法中
        @Override
        public void run() {
            while (true){
                if (tick>0){
                    System.out.println(Thread.currentThread().getName()+"..."+tick);
                }
            }
        }
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值