黑马程序员 – 学习Java5中的多线程(2) – 2012.12.30

来源:互联网 发布:弱视治疗软件 编辑:程序博客网 时间:2024/06/09 16:22

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------


今天学习了张老师Java5线程并发库的第一个和第二个视频,回顾了传统的线程创建方式和定时器的应用。现在总结一下。

 

传统创建线程的第一种方式:继承Tread类。

1. 定义类继承Tread。

2. 重写run方法。

3. 调用线程的start方法。

 

传统创建线程的第二种方式:实现Runnable接口。

1. 定义类实现Runnable接口。

2. 覆盖Runnable接口中的run方法。

3. 通过Tread类建立线程对象。

4. 将Runnable的子类对象作为实际参数传递给Tread类的构造函数。

5. 调用Tread类的start方法。

 

两个问题:

1. 多线程机制会提高程序的运行效率吗?

只有一个CPU的话,会导致电脑性能降低的。

2. 为什么会有多线程下载呢?号称速度会加快?

并不是自己的电脑变快了,而是多线程下载方式可以得到对方服务器更多的资源(带宽)。

 

定时器的应用,要记住的是Timer类。还有开源工具quartz,可以解决商业的定时处理任务问题。老师讲解定时器的时候,有个连环炸弹的例子,另外一种实现方式老师并没有写代码,我尝试写了一下,运行是没问题的。

package cn.itcast;

 

import java.util.Date;

import java.util.Timer;

import java.util.TimerTask;

 

//用互相调用的方式实现2秒、4秒交替爆炸

public class TraditionalTimerTest1 {

    //自定义炸弹任务,显示爆炸,并且里面有一个4秒后爆炸的炸弹

    class MyTimerTask1extends TimerTask{

 

       @Override

       public void run() {

           System.out.println("bombing---------------要炸了!");

           new Timer().schedule(new MyTimerTask2(), 4000);

       }

    }

    //自定义炸弹任务,显示爆炸,并且里面有一个2秒后爆炸的炸弹

    class MyTimerTask2extends TimerTask{

 

       @Override

       public void run() {

           System.out.println("bombing---------------要炸了!");

           new Timer().schedule(new MyTimerTask1(), 2000);

       }

    }

   

   

    public staticvoid main(String[] args) {

      

       //2秒后炸,接着4秒后炸,如此循环往复。。。

       new Timer().schedule(new TraditionalTimerTest1().new MyTimerTask1(), 2000);

       while(true){

           System.out.println(new Date().getSeconds());

           try {

              Thread.sleep(1000);

           } catch (InterruptedException e) {

             

              e.printStackTrace();

           }

       }

    }

}




原创粉丝点击