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