线程示例

发表时间:2017-05-09 13:29:11 浏览量( 17 ) 留言数( 0 )

学习目标:

1、了解Java的历史

2、为什么要学习Java语言

3、端正学习态度


学习过程:

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

一、倒计时示例

这个例子比较简单,要求程序每一秒中就输出一个数字,模拟倒计时。要实现每隔一秒才输出,只需要让程序输出一个数字就休眠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("闹钟启动了。");
	}

}

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