一.什么是进程?什么是线程?
进程是 线程的集合,一个进程可以有多个线程,但是一个线程只能属于一个进程。(例如:用网易云听音乐是一个进程,可以选择不同的音乐,或者进行评论就是线程)。
二.创建一个线程的方法:
1.继承Thread类:
package 多线程;
//通过集成thread类来创建多线程
class Mythread extends Thread{
@Override
public void run() {
try {
Thread.sleep(10000);//让线程睡10s
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("线程启动");
}
}
public class ThreadDemo {
public static void main(String[] args) throws Exception {
System.out.println("主线程启动");
Mythread threadA=new Mythread();
threadA.start();
// for (int i = 1; i < 15; i++) {
// System.out.println("主线程启动"+i+"次");
// }
threadA.sleep(10000);
System.out.println("主线程结束");
}
}
虽然主函数和线程各自睡了10s,但是由于是多线程同时运行的,所以一共只睡了10s
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
2.通过实现runable接口来实现多线程
package 多线程;
//通过实现runable接口实现多线程
class MythreadB implements Runnable{
@Override
public void run() {
// for (int i = 1; i <15; i++) {
// System.out.println("线程打印"+i+"次");
// }
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("线程结束");
}
}
public class ThreadDemoB {
public static void main(String[] args) throws Exception{
System.out.println("主函数启动");
MythreadB mythreadB=new MythreadB();
Thread thread=new Thread(mythreadB);
thread.start();
// for (int i = 1; i <15; i++) {
// System.out.println("主函数打印"+i+"次");
// }
thread.sleep(5000);
System.out.println("主函数结束");
}
}
---------------------------------------------------------------------------------------------------------------
3.通过匿名内部类来实现多线程的创建
package 多线程;
//通过匿名内部类的方法实现多线程
public class ThreadDemoC {
public static void main(String[] args) {
System.out.println("主函数启动!!!");
Thread thread=new Thread(new Runnable() {
public void run() {
for (int i = 1; i <15; i++) {
System.out.println("线程打印"+i+"次");
}
}
})“DdCATS”;
thread.start();
for (int i = 1; i <15; i++) {
System.out.println("主函数打印"+i+"次");
}
}
}
这里通过匿名内部类来给创建多线程,顺便给线程命名为:DdCATS
---------------------------------------------------------------------------------------------------------
4.通过并发包的callback类来创建多线程
5.通过线程池来创建多线程(最常用)
三.为什么要使用多线程?
提高程序的效率