java中的多线程
一、线程
1.要讨论多线程,那么首先要先了解线程,什么是线程?
一个线程就是一个程序内部的一条执行线索,一个或多个线程组成了一个进程。
2.那什么是进程呢?
在多任务系统中,每个独立执行的程序称为进程。也就是“正在进行的程序”。
3.进程和线程的联系与区别?
线程是包括在进程中的,每个进程至少有一个主线程,也可以只有一个主线程(程序的main方法就是主线程)。
4.什么是多线程?
如果要一程序中实现多段代码同时交替运行,就需要产生多个线程,并指定每个线程上所要运行的程序代码段,这就是多线程。
5.线程的生命周期?
①新建状态
②就绪状态
③运行状态
④阻塞状态
⑤终止状态
②就绪状态
③运行状态
④阻塞状态
⑤终止状态
①→②→③→⑤
↑↓
④
注意:当一个线程被创建后,它不会马上执行,而是会进入就绪状态,等待资源分配!
6.线程的创建
在java中有两种方法创建一个线程:
6.1继承Thread类,并重写run()方法
例子:
public class MyThread extends Thread{
public MyThread(){}
//在这里我写了一个线程的构造方法,来给线程定义一个名字
public MyThread(String name){
super(name);
}
@Override
public void run() {
for(int i=1;i<10;i++){
System.out.println("子线程"+i);
}
}
public MyThread(){}
//在这里我写了一个线程的构造方法,来给线程定义一个名字
public MyThread(String name){
super(name);
}
@Override
public void run() {
for(int i=1;i<10;i++){
System.out.println("子线程"+i);
}
}
}
6.2实现Runnable接口,并重写run()方法
例子:
public class MulThread implements Runnable {
public MulThread(){}
public MulThread(String name){
Thread.currentThread().setName(name);
}
@Override
public void run() {
for(int i=0;i<5;i++){
System.out.println("这是"+Thread.currentThread().getName()+"的第"+(i+1)+"次循环");
}
try {
Thread.sleep((long)(Math.random()*1000));
} catch (InterruptedException e) {
e.printStackTrace();
}
public MulThread(){}
public MulThread(String name){
Thread.currentThread().setName(name);
}
@Override
public void run() {
for(int i=0;i<5;i++){
System.out.println("这是"+Thread.currentThread().getName()+"的第"+(i+1)+"次循环");
}
try {
Thread.sleep((long)(Math.random()*1000));
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+" FINISHED!");
}
}
}
}
二、线程池
1.什么是线程池
线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。