当前位置:编程学习 > JAVA >>

java 编程问题 写出程序

写一个多线程类,该类的构造方法调用Thread类带字符串参数的构造方法。建立自己的线程名,然后随机生成一个休眠时间,再将自己的线程名和休眠多长时间显示出来。该线程运行后,休眠一段时间,该时间就是在构造方法中生成的时间。最后编写一个测试类,创建多个不同名字的线程,并测试其运行情况。

 

答案:自定义线程类:
public class MyThread extends Thread {
    protected int randomSleepTime;// 声明随机睡眠时间

    public MyThread(String threadName) {
        this.setName(threadName);// 继承自基类Thread的setName方法,用来设置线程名
        this.randomSleepTime = (int) (Math.random() * 10000);// 随机产生10秒内时间
    }

    @Override
    public void run() {
        //打印出当前线程名字以及生成的随机睡眠时间数,单位为毫秒ms
        System.out.println("线程: " + Thread.currentThread().getName()
                + " 执行run方法,生成随机睡眠时间为: " + randomSleepTime + "ms");
        try {
            //线程进入睡眠
            System.out.println("线程: " + Thread.currentThread().getName()
                    + " 开始睡眠...ZZZZZZZ");
            Thread.sleep(randomSleepTime);
            //线程结束睡眠
            System.out.println("线程: " + Thread.currentThread().getName()
                    + " 睡眠结束...");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

}
测试类:
public class Test {

    public static void main(String[] args) {
        MyThread mt1 = new MyThread("zhangsan");//实例化四个线程
        MyThread mt2 = new MyThread("lisi");
        MyThread mt3 = new MyThread("wangwu");
        MyThread mt4 = new MyThread("zhaoliu");

        mt1.start();//分别启动线程
        mt2.start();
        mt3.start();
        mt4.start();
    }

}
一次测试的结果:

public class Main{//测试类
    public static void main(String args[ ]){
        MyThread  zhang,wang,James;
        zhang=new MyThread("张小红");        //新建线程
        wang=new MyThread("JamsKeven");     

        James=new MyThread("James");
        zhang.start();                               //启动线程
        wang.start();                             

        James.start();
   }
}
class MyThread extends Thread{         //Thread的子类负责创建线程对象
    int sleepTime=0;
    MyThread(String s){
        setName(s);                        //调用Thread类的setName方法为线程起个名字
        sleepTime=(int)(Math.random()*10000);     //生成一个随机数,该值比较合适用于测试
    }
    public void run(){
        System.out.println("当前线程名为:"+getName()+"  休眠时间为:"+sleepTime);
        try
        {
            sleep(sleepTime);//休眠时间单位为毫秒
            System.out.println(getName()+"线程休眠结束");
        }
        catch(InterruptedException e){}
    }
}

上一个:java学后的工作领域
下一个:JAVA编程,满意追加50

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,