参考: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> |