Java中线程示例和传参问题

线程示例和传参问题

为了使大家对线程有更深的认识,这里举两个简单的例子说明一下:

一、倒计时示例

这个例子比较简单,要求程序每一秒中就输出一个数字,模拟倒计时。要实现每隔一秒才输出,只需要让程序输出一个数字就休眠1秒的时间,实现代码如下:

public class ThreadDaoji extends Thread{
    
    public void run(){    
        for(int i=10;i>0;i--){
            System.out.println(i);    
            try {
                Thread.currentThread().sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

}

在main函数中启动这个线程,后台将会间隔1秒输出一个,当run方法执行完毕,该线程也就结束了。代码如下:

public class Stu2 {
    public static void main(String[] args) {
        ThreadDaoji threadDaoji=new ThreadDaoji();
        threadDaoji.start();
    }
}

二、闹钟示例和传参问题

这个示例要求用户设置时和分两个世界,当到达指定的时间,程序就会发生连续的声响,提示用户时间已经到了。要实现这个功能。

我们首先讲解一下线程的传参的问题,因为线程必须实现run方法,该方法是在父类定义的,所以我们要给线程传参数,就不能通过run()方法传递的,只能定义类的全局变量,我们可以使用构造方法传参或者给全局变量设置set的方法来实现传参。比如下面这个闹钟类,就是用构造方法传参,代码如下:

public class ThreadAlarm extends Thread{
    
    private int hour;
    private int miniute;
    
    public ThreadAlarm(int hour,int miniute){
        this.hour=hour;
        this.miniute=miniute;
    }
    
    
    public void run(){

    }

}

run()方法就是实现闹钟的判断功能,程序每隔一秒钟就会获得当前时间,然后与用户传进来的时间进行比较,如果时间到了就发出声音,然后线程才结束。run()方法实现如下:

    public void run(){
        while(true){
            //当前的时间是否等于用户设定的时间,每一秒都做一次判断
            Calendar calendar=Calendar.getInstance();
            //当前的时间
            int curhour=calendar.get(Calendar.HOUR);
            int curminute=calendar.get(Calendar.MINUTE);
            
            if(hour==curhour&&miniute==curminute){
                //时间到了。发出5下声响
                for(int i=0;i<5;i++){
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    java.awt.Toolkit.getDefaultToolkit().beep();
                }
                
                break;
            }    
        }
    }

完成后,我们就可以在main方法中调用这个线程,要求用户输入时和分两个变量。实现代码如下:

public class Stu3 {
    
    public static void main(String[] args) {
        //
        Scanner scanner=new Scanner(System.in);
        System.out.println("时:");
        int hour=scanner.nextInt();
        System.out.println("分:");
        int minute=scanner.nextInt();
        
        ThreadAlarm alarm=new ThreadAlarm(hour, minute);
        alarm.start();
        System.out.println("闹钟启动了。");
    }

}

你可以运行以上程序进行测试。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值