Java多线程-多线程的引入
定义:同时对多项任务加以控制;
什么是多线程呢,我可以简单的理解成 一边吃饭,一边听音乐 这个是多线程;假如 吃完饭再听音乐,或者先听音乐再吃饭,这个是单线程。
程序里同时执行多个任务并且加以控制 这个是java多线程的含义。同时干多个事,能充分利用cpu 内存等硬件设备,提高程序运行效率。
下面我们通过一个实例来体验下多线程:
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
|
package
com.java1234.chap09.sec01;
public
class
Test01 {
/**
* 听音乐
*/
private
static
void
music(){
for
(
int
i=
0
;i<
100
;i++){
System.out.println(
"听音乐"
);
}
}
/**
* 吃饭
*/
private
static
void
eat(){
for
(
int
i=
0
;i<
100
;i++){
System.out.println(
"吃饭"
);
}
}
public
static
void
main(String[] args) {
music();
eat();
}
}
|
这个代码应该很简单理解。先听音乐,再吃饭,运行输出类似:
听音乐
听音乐
.
.
.
听音乐
吃饭
吃饭
.
.
.
吃饭
吃饭
我们用上多线程,一般吃饭,一边听音乐,
Eat线程类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
package
com.java1234.chap09.sec01;
public
class
Eat
extends
Thread{
@Override
public
void
run() {
for
(
int
i=
0
;i<
100
;i++){
try
{
Thread.sleep(
100
);
System.out.println(
"吃饭"
);
}
catch
(InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
|
Music类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
package
com.java1234.chap09.sec01;
public
class
Music
extends
Thread{
@Override
public
void
run() {
for
(
int
i=
0
;i<
100
;i++){
try
{
Thread.sleep(
100
);
System.out.println(
"听音乐"
);
}
catch
(InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
|
测试类:
1
2
3
4
5
6
7
8
9
10
11
|
package
com.java1234.chap09.sec01;
public
class
Test02 {
public
static
void
main(String[] args) {
Music musicThread=
new
Music();
Eat eatThread=
new
Eat();
musicThread.start();
eatThread.start();
}
}
|
运行输出类似:
吃饭
听音乐
.
.
.
吃饭
听音乐
.
.
吃饭
听音乐