多线程的定义是:同时对多项任务加以控制。
那什么是多线程呢?这个问题可以理解成一边吃饭、一边听歌。这个是多线程。假如吃完饭再听歌,
或者是先听歌再吃饭,这个是单线程。
程序里同时执行多个任务并且加以控制,这个是Java多线程的含义。同时干多个事情,
能充分的利用电脑CPU内存等硬件设备,并以提高程序运行效率。
使用代码体验:首先试一试往常的编程写法
package com.java.test;
public class EatTest {
/**
* 听音乐
*/
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();
}
}
运行结果:
可以明显的看出来,它是听完100首歌在进行吃饭,无法做到一边听歌一边吃饭。
再试一试使用多线程实现的方法:
package com.java.test;
/**
* 听音乐的类
* @author Administrator
*
*/
public class MusicThreadTest extends Thread{
@Override
public void run() {
for(int i=0;i<100;i++){
try {
//暂停线程0.1秒种
Thread.sleep(100);
System.out.println("听音乐");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
package com.java.test;
/**
* 吃饭的类
* @author Administrator
*
*/
public class EatThreadTest extends Thread{
@Override
public void run() {
for(int i=0;i<100;i++){
try {
//暂停线程0.1秒种
Thread.sleep(100);
System.out.println("吃饭");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
MusicThreadTest musicThread=new MusicThreadTest();
EatThreadTest eatThread=new EatThreadTest();
musicThread.start();
eatThread.start();
}
}
运行结果:
可以看的出,它是并行执行的,听音乐、吃饭,听音乐、吃饭........。两件事请是同时执行。