您的位置:首页 > 职场人生

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

2013-01-18 12:05 239 查看
----------- 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 MyTimerTask1
extends TimerTask{
 
       @Override
       public
void
run() {
           System.out.println("bombing---------------要炸了!");
           new Timer().schedule(new MyTimerTask2(), 4000);
       }
    }
    //自定义炸弹任务,显示爆炸,并且里面有一个2秒后爆炸的炸弹
    class MyTimerTask2
extends 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();
           }
       }
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: