参考:http://blog.csdn.net/stellaah/article/details/6798244
创建线程:
创建线程过程:
1.继承Thread
|
1
2
3
4
5
6
7
8
9
10 |
class 类名A extends
Thread{public void run(){}}2.实例对象Thread t=new
类名A();3.启用线程t.start();自动会去运行run(). |
2.Runable接口
|
1
2
3
4
5
6
7
8
9
10 |
实现Runnable接口创建线程1.实现Runnable接口类名A implements
Runnable(){ public
void run(){}}2.启用线程new Thread(类名A的对象).start(); |
区别:
使用Runnable接口创建多线程,适合多个相同的程序代码的线程去处理分享同一个资源的情况,把虚拟CPU(线程)同程序的代码数据有效分离,较好体现了面向对象的设计思想.
setDeamon(true)
设置守护线程,程序非守护线程全部退出时,守护线程自动退出。
join(),join(msecond) 合并线程
t1.join(500) 打断当前线程执行t1线程,500msecond 如果t1线程死亡 则直接继续执行当前线程
synchronized
synchronized代码块的用法-synchronized(Object){}
synchronized方法的用法需要与run()方法两个结合起来用
wait() notify
wait()休眠放弃资源控制锁 notify 通知其他线程去访问
Timer TimerTask
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 |
import java.util.*;class ZhaDan extends
TimerTask //炸弹{ public
void run() { System.out.println("Boang... ...炸了!"); } }class TimerTest{ public
static void main(String[]args) { Timer t=new
Timer();//创建定时器对象 ZhaDan z=new
ZhaDan();//创建炸弹对象 t.schedule(z,1000,2000);//隔1秒引爆炸弹.之后就是每2秒一炸 while(true) { try{Thread.sleep(1000);}catch(Exception e){} System.out.println(new
Date().getSeconds());//输出当前时间的秒 } } }<br> |
原文:http://www.cnblogs.com/wjw334/p/3613888.html