一、在Java中,线程的实现有2种
1.继承Thread类
2.实现Runable接口
二、Thread类
Thread类是在java.lang包中定义的,继承Thread类必须重写run()
定义格式:class className extends Thread{
public void run(){}
}
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
28
29
30
31
|
public
static
void
main(String[] args) {
MyThread t1 =
new
MyThread(
"A"
);
MyThread t2 =
new
MyThread(
"B"
);
// t1.run();
// t2.run();
//线程的启动是通过start()
t1.start();
t2.start();
}
public
class
MyThread
extends
Thread{
private
String name;
//标识线程的名称
public
MyThread(String name){
this
.name = name;
}
//在run()中为了能看出来,使用一个for循环进行打印输出
public
void
run(){
for
(
int
i=
0
; i<
10
; i++){
System.out.println(name+
":"
+i);
}
}
}
|
三、Runnable接口
Runnable
接口应该由那些打算通过某一线程执行其实例的类来实现。
设计该接口的目的是为希望在活动时执行代码的对象提供一个公共协议。例如,Thread
类实现了 Runnable
。激活的意思是说某个线程已启动并且尚未停止。
Thread类是在java.lang包中定义的,继承Thread类必须重写run()
Runnable
为非 Thread
子类的类提供了一种激活方式。通过实例化某个 Thread
实例并将自身作为运行目标,就可以运行实现 Runnable
的类而无需创建 Thread
的子类。大多数情况下,如果只想重写 run()
方法,而不重写其他 Thread
方法,那么应使用 Runnable
接口。这很重要,因为除非程序员打算修改或增强类的基本行为,否则不应为该类创建子类。
定义格式:class className implements Runnable{
public void run(){}
}
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
28
|
public
static
void
main(String[] args) {
MyRunable r1 =
new
MyRunable(
"A"
);
MyRunable r2 =
new
MyRunable(
"B"
);
Thread t1 =
new
Thread(r1);
Thread t2 =
new
Thread(r2);
t1.start();
t2.start();
}
public
class
MyRunable
implements
Runnable{
private
String name;
public
MyRunable(String name){
this
.name = name;
}
public
void
run(){
for
(
int
i=
0
; i<
1000
; i++){
System.out.println(name+
":"
+i);
}
}
}
|
本文转自yeleven 51CTO博客,原文链接:http://blog.51cto.com/11317783/1775214