多线程(一) —— 传统线程(Thread)的创建和计时器(Timer)

传统线程两种创建方式

  1. 第一种
       new Thread(){
            @Override
            public void run() {

                //线程执行
                System.out.println(this.getName());
            }
        }.start();
  1. 第二种
       new Thread(new Runnable() {
            @Override
            public void run() {
                //线程执行
                System.out.println(Thread.currentThread().getName());
            }
        }).start();

简单说明:

在线程中this.getName() 和Thread.currentThread().getName(),this.getName()在第一种是没有问题,但是,在第二种方式中,是不可行的,因为,this 是获取当前对象,如果在第二种方式中如果再使用this 获取线程名,this 指向的是Runnable 对象不是Thread ,所以,如果使用第二种方式创建线程,应使用Thread.currentThread().getName()获取线程名,推荐,无论使用哪种方式的线程,最好都使用Thread.currentThread().getName()方式获取线程信息。

下面实现方式那个run方法会被调用

        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("is run Runnable");
            }
        }){

            @Override
            public void run() {
                System.out.println("is run out Run");

            }
        }.start();

执行结果

       new Thread(new Runnable() {
            @Override
            public void run() {
                //不会执行
            }
        }){

            @Override
            public void run() {
                //会执行

            }
        }.start();

计时器(Timer)

在实际开发中我们有时会需要周期性的执行一段代码块,如每2分钟执行一次特定代码。

实现一个简单Timer

        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                //执行内容
                System.out.println("Time is run.....");
            }
        },0,200);

Timer 中的几个常用API 说明
1. public Timer(boolean isDaemon) 设置是否是守护线程
2. public void schedule(TimerTask task, long delay, long period)

第一个参数是要操作的方法
第二个参数是要设定延迟的时间
第三个参数是周期的设定,每隔多长时间执行该操作。

你可能感兴趣的:(Java多线程)