什么是多线程
- 线程
线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。 - 进程
进程是程序的基本执行实体。运行的软件就是进程 - 多线程
- 简单理解:应用软件中互相独立,可以同时运行的功能
- 多线程的作用就是提高效率
- 多线程的应用场景:只要你想让多个事情同时运行就需要用到线程
并发和并行
- 并发:在同一时刻,有多个指令在单个CPU上交换执行
- 并行:在同一时刻,有多个指令在多个CPU上同时执行
多线程的实现方式
- 继承Thread类的方式进行实现
- 实现Runnable接口的方式经行实现
- 利用Callable接口和Future接口方式实现
什么是Thread类
Thread类就是表示Java里面的线程
如何创建新执行线程
创建新执行线程有两种方法。一种方法是将类声明为Thread的子类。该子类应重写Thread类的run方法。接下来可以分配并启动该子类的实施。例如,计算大于某一规定值的质数的线程可以写成。
public class ThreadDemo{
public static void main(String[] args) {
//多线程的第一种启动方式:
// 1.自己定义一个类继承Thread
// 2.重写run方法
// 3.创建子类对象,并启动线程
MyThread t1=new MyThread();
MyThread t2=new MyThread();
//给线程起名
t1.setName("线程1");
t2.setName("线程2");
//开启线程
t1.start();
t2.start();
}
}
public class MyThread extends Thread{
@Override
public void run(){
for(int i=0;i<100;i++){
System.out.println(getName()+"he");
}
}
}
什么是Runnable接口的类
创建线程的另一种方法是声明实现Runnable接口的类,该类然后实现run方法,然后可以分配该类的实例,在创建Thread时作为一个参数来传递并启动。
public class ThreadDemo{
public static void main(String[] args) {
//多线程的第二种启动方式:
// 1.自己定义一个类实现Runnable接口
// 2.重写里面的run方法
// 3.创建自己的类的对象
// 4.创建一个Thread类的对象,并开启线程
//创建MyRun的对象
//表示多线程要执行的任务
MyRun mr=new MyRun();
//创建线程对象
Thread t1=new Thread(mr);
Thread t2=new Thread(mr);
//给线程设置名字
t1.setName("线程1");
t2.setName("线程2");
//开启线程
t1.start();
t2.start();
}
}
public class MyRun implements Runnable{
@Override
public void run(){
for(int i=0;i<100;i++){
// 获取到当前线程的对象
Thread t=Thread.currentThread();
System.out.println(t.getName()+"he");
}
}
}