黑马程序员 – 学习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();
}
}
}
}
今天学习了张老师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();
}
}
}
}
相关文章推荐
- 黑马程序员—10—java基础:有关多线程安全的学习笔记和学习心得体会
- 黑马程序员---java学习笔记之多线程
- 黑马程序员之JAVA学习笔记:多线程学习大总结
- 黑马程序员学习笔记 Java中多线程与并发的总结
- 黑马程序员Java培训、Android培训-Java 学习过程记录_多线程
- 黑马程序员——Java学习笔记--多线程
- 黑马程序员-java学习之多线程
- 黑马程序员 java学习笔记——多线程2
- 【黑马程序员】java多线程学习总结
- 黑马程序员-java学习笔记-多线程
- 黑马程序员-----Java基础学习多线程
- 黑马程序员---java学习笔记之多线程2
- 黑马程序员--Java学习日记之多线程
- 黑马程序员_JAVA学习日记_JAVA中的多线程补充
- 黑马程序员_java多线程学习总结
- 黑马程序员 (1) 对JAVA多线程编程进行学习。
- 【黑马程序员】Java多线程学习及应用
- 黑马程序员java学习笔记,多线程
- 黑马程序员--Java学习日记6_多线程
- 黑马程序员---Java基础学习笔记(多线程-后篇)