• 线程操作范例


    实例要求:

      设计一个线程操作类,要求可以产生三个线程对象,并可以分别设置三个线程的休眠时间。如下所示:

    问怎么设计?

    分析

      从之前学习知道,线程的实现有两种方式,一种是继承Thread类,另一种是实现Runnable接口。而且类中应保存线程名称和休眠时间属性。

    1,通过Thread类实现。

      在Thread类中直接存在name属性。所以不用定义name属性,直接在子类构造方法通过super(name)方法设置即可。

    class MyThread extends Thread{
        private int time ;    //time要自己定义
        public MyThread(String name,int time){
            super(name) ;    // 设置线程名称,因为Thread本身存在name属性,所以不用定义name属性,直接在子类构造方法通过super(name)方法设置即可
            this.time = time ;    // 设置休眠时间
        }
        public void run(){
            try{
                Thread.sleep(this.time) ;    // 休眠指定的时间
            }catch(InterruptedException e){
                e.printStackTrace() ;    //打印错误。
            }
            System.out.println(Thread.currentThread().getName() + "线程,休眠"
                + this.time + "毫秒。") ;
        }
    };
    public class ExecDemo01{
        public static void main(String args[]){
            MyThread mt1 = new MyThread("线程A",10000) ;    // 定义线程对象,指定休眠时间
            MyThread mt2 = new MyThread("线程B",20000) ;    // 定义线程对象,指定休眠时间
            MyThread mt3 = new MyThread("线程C",30000) ;    // 定义线程对象,指定休眠时间
            mt1.start() ;    // 启动线程
            mt2.start() ;    // 启动线程
            mt3.start() ;    // 启动线程
        }
    };

    运行结果:

    一个个休眠多少秒后一个个执行线程。

    线程A线程,休眠10000毫秒。
    线程B线程,休眠20000毫秒。
    线程C线程,休眠30000毫秒。

    2,使用Runnable接口实现。

      则类中是没有name属性的,所以应该单独建立一个name属性,以保存线程的名称。

      

    class MyThread implements Runnable{
        private String name ;
        private int time ;
        public MyThread(String name,int time){
            this.name = name ;    // 设置线程名称
            this.time = time ;    // 设置休眠时间
        }
        public void run(){
            try{
                Thread.sleep(this.time) ;    // 休眠指定的时间
            }catch(InterruptedException e){
                e.printStackTrace() ;
            }
            System.out.println(this.name + "线程,休眠"
                + this.time + "毫秒。") ;
        }
    };
    public class ExecDemo02{
        public static void main(String args[]){
            MyThread mt1 = new MyThread("线程A",10000) ;    // 定义线程对象,指定休眠时间
            MyThread mt2 = new MyThread("线程B",20000) ;    // 定义线程对象,指定休眠时间
            MyThread mt3 = new MyThread("线程C",30000) ;    // 定义线程对象,指定休眠时间
            new Thread(mt1).start() ;    // 启动线程
            new Thread(mt2).start() ;    // 启动线程
            new Thread(mt3).start() ;    // 启动线程
        }
    };
  • 相关阅读:
    转载:关于sql server数据库表的主键问题
    centos FTP服务器的架设和配置
    OceanBase,淘宝开源的千亿级别分布式数据库系统。支持读写事务的线上服务
    在Fedora/Redhat/CentOS中防火墙设置
    转:SQL2008调试
    1.4.2 使用ActionScript类
    自写ajax经验总结
    搜索引擎中文分词技术
    优化数据库的方法及SQL语句优化的原则
    因为数据库正在使用,所以无法获得对数据库的独占访问权还原或删除数据库的解决方法
  • 原文地址:https://www.cnblogs.com/alsf/p/5672216.html
Copyright © 2020-2023  润新知