多线程
并行和并发
并行:同一时刻多个任务同时执行
并发:一段时间内存在多个任务,多个任务交替执行
进程和线程
进程:是指正在运行的程序。有以下三个特点:
- 当程序一运行就会产生一个进程
- 每一个进程都有一个自己独立的一块内存空间
- 每一个进程的内部数据和状态都是完全独立的
线程:进程中执行运算的最小单位,一个进程执行过程中可以产生多个线程,线程必须在某个进程中执行
- 一个进程中至少要有一个线程
- 资源分配给进程,同一进程的所有线程共享该进程的所有资源
- 真正在处理器上运行的是线程
使用Thread类创建线程
继承Thread类
重写run( )方法
通过调用start( )方法来启动一个新的线程
当启动一个新的线程之后,子线程的run方法运行,主线程的main方法继续运行,形成了run( ) 和main( ) 并行的局面
Thread.currentThread( ).getName()
获取当前线程的名称
public class Demo01{
public static void main(String[] args){
MyThread Thread=new MyThread();
Thread.setName("子线程")
Thread.start() //开启一个新的线程
}
}
class MyThread extends Thread{
//重写run() 方法
public void run(){
for (int i=0;i<100;i++){
System.out.println(Thread.currentThread().getName()+"运行"+i+"次");
}
}
}
使用Runnable接口来创建线程
- 实现runnable接口
- 重写run 方法
- 构建Thread对象传递Runnable对象
- 调用start() 方法开启一个新的线程
public class Demo02{
public static void main(String[] args){.
MyRunnable Runnable=new MyRunnable();
Thread thread = new Thread(Runnable);
thread.setName("子线程");
thread.start();
}
}
class MyRunnable implements Runnable{
public void run(){
for(int i=0;i<10;i++){
System.out.println(Thread.currentThread().getName()+"运行了"+i+"次")
}
}
}
Callable接口
- 实现Callable接口,
- 重写call方法,
- 构建
FutureTask
对象传递Callable对象,- 构建Thread对象传递的
FutureTask
对象,- 通过start启动线程。