zoukankan      html  css  js  c++  java
  • 线程操作范例

    实例要求:

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

    问怎么设计?

    分析

      从之前学习知道,线程的实现有两种方式,一种是继承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() ;    // 启动线程
        }
    };
  • 相关阅读:
    POJ 1703 Find them, Catch them
    POJ 2236 Wireless Network
    POJ 2010 Moo University
    POJ 2184 Cow Exhibition
    POJ 3280 Cheapest Palindrome
    POJ 3009 Curling 2.0
    POJ 3669 Meteor Shower
    POJ 2718 Smallest Difference
    POJ 3187 Backward Digit Sums
    POJ 3050 Hopscotch
  • 原文地址:https://www.cnblogs.com/alsf/p/5672216.html
Copyright © 2011-2022 走看看