《Java》Java“定时器和多线程”实际应用——定时器配合多线程

一、任务目标

    完成一个java application应用程序,此应用程序公共类有一个double型类属性(变量)x,初始值为0;在应用程序主进程中新开两个线程,这两个线程都进行死循环;第1个线程每隔300ms激活一次,令类属性x自加1.0并输出显示;第2个线程每隔400ms激活一次,令类属性x自加0.1并输出显示。

二、线程的实现——继承Thread类

    在Java中主要提供两种方式实现线程,分别为继承 java.lang.Thread 类与实现 java.lang.Runnable接口。
    Thread 类中实例化的对象代表线程,继承 Thread 类创建一个新线程的语法如下:

public class ThreadTest extends Thread{

}

    完成线程真正功能的代码放在类的run()方法中,当一个类继承 Thread 类后,就可以在该类中覆盖 run() 方法,将实现该线程功能的代码写入 run() 方法中,然后同时调用 Thread 类中的 start() 方法执行线程,也就是调用 run() 方法。

三、代码实现

注:关于Timer类的使用请点击 -> 参考文章

程序代码:

import java.lang.Thread; //导入Thread类
import java.util.Timer;  //导入Timer类
import java.util.TimerTask; //导入TimerTask类

public class ThreadTest{  //创建ThreadTest类
	/**
	 * @param args
	 */
	static double x = 0; //定义双精度变量x

	public static class T1 extends Thread{ //指定T1继承Thread类
		public void run(){ //Thread的run()方法
			Timer timer1 = new Timer(); //创建Timer类对象timer
			timer1.schedule(new TimerTask(){ //schedule方法延迟300ms
				public void run(){ //TimerTask类的run()方法
					x += 1.0;
					System.out.println("当前x的值为:"+x);
				}
			},0,300);
		}
	}

	public static class T2 extends Thread{
		public void run(){
			Timer timer2 = new Timer();
			timer2.schedule(new TimerTask(){
				public void run(){
					x += 0.1;
					System.out.println("当前x的值为:"+x);
				}
			},0,400);
		}
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub	
		
		new T1().start(); //启动线程T1
		new T2().start(); //启动线程T2
	}
}

运行结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/yga_airspace/article/details/83241770