关于多线程的最后一点定时器
package 多线程;
import java.text.*;
import java.util.*;
/*
* 关于定时器的应用、
* 作用,每隔一段固定的时间执行一段代码
*/
public class TimerTest01
{
public static void main(String[] args) throws Exception
{
//1.创建定时器
Timer t = new Timer();
//2.指定定时任务
t.schedule(
new LogTimerTask(),
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS").parse("2019-07-12 01:25:00 000"),
10*1000);
}
}
//指定任务
class LogTimerTask extends TimerTask
{
public void run()
{
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS").format(new Date()));
}
}
反射机制
反射机制中主要掌握的类型
以下是SUN提供的反射机制中的类
java.lang.Class; Class c = 0x1234;(整个类)
java.lang.reflect.Constructor; Constructor c = 0x2345;(构造方法)
java.lang.reflect.Field; Field f = 0x3456;(属性)
java.lang.reflect.Modifier; Modifier m = 0x4567;(修饰词)
class User
{
private String name;
public User(){}
public void m1(){}
}
反射机制的作用
1.反编译:.class --> .java
2.通过反射机制访问java对象的属性,方法,构造方法等
package 反射机制;
import java.util.Date;
/*
* 获取class对象的三种方式
*/
public class ReflcctTest01
{
public static void main(String[] args) throws Exception
{
//第一种方法
//Class c1 = Class.forName("Employee");//c1引用保存内存地址指向堆中的对象,该对象代表的是Emploe整个类
//第二种方式
//java中每个类型都有class属性
Class c2 = Employee.class;
//第三种方式
//java语言中任何一个java对象都有getClass方法
Employee e = new Employee();
Class c3 = e.getClass();//c3是运行时类(e的运行时类是Employee)
//因为c1,c2,c3的内存地址是相同的,指向堆中的唯一的一个对象
//System.out.println(c1==c2);//true
System.out.println(c2==c3);//true
//c4 c5 c6都代表Date这个类
Class c4 = Date.class;//c4代表Date这个类
Class c5 = Class.forName("java.util.Date");//必须是类全名,类全名带有包名
Date d = new Date();
Class c6 = d.getClass();
//c7代表int类型
Class c7 = int.class;
}
}
package 反射机制;
public class ReflectTest02
{
public static void main(String[] args) throws Exception
{
//将A.class文件装载到JVM中的过程。 会执行静态语句块
//Class.forName("A");
//不会执行静态语句块
//Class c = A.class;
A a = new A();
Class c = a.getClass();
}
}
class A
{
static
{
System.out.println("A....");
}
}
package 反射机制;
/*
* 获取Class类型的对象之后,可以创建该“类”的对象
*/
import java.util.*;
import java.text.*;
public class ReflectTest03
{
public static void main(String[] args) throws Exception
{
// Class c = Class.forName("Employee");
//
// //创建此 Class 对象所表示的类的一个新实例。
// Object o = c.newInstance();
//
// System.out.println(o);
Class c1 = Class.forName("java.util.Date");
Object o = c1.newInstance();
if(o instanceof Date) {
Date t = (Date)o;
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS").format(t));
}
}
}