线程:线程是进程中的一个执行流程,相当于代码从上往下执行。
进程:进程是线程的集合,每一个线程是进程中的一条执行路径。也可以说它是一个单独的应用程式。
多线程:同一时刻有多条不同的执行路径,同时进行执行,也就是说同时有多条线程在执行。
线程的分类:主线程,子线程,用户线程,守护线程等待...
创建多线程的方式:
- 继承Thread类,并重写run()方法。
- 实现Runnabble接口,重写run()方法。
- 使用匿名类部类的形式创建。
- 实现 Callable 接口的 call 方法,用 FutureTask 类包裹 Callable 对象。然后再用 Thread 类包裹 FutureTask 类
package com.thread;
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
/**
*
* @author ****
*
* @date 2019年4月12日下午4:50:45
*
* @version 1.0
*
* <p>作用描述:多线程</p>
*
*/
//继承Thread类创建线程
class ThreadDemo extends Thread{
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("T i : " + i);
}
}
public static void main(String[] args) {
new ThreadDemo().start();
}
}
//实现Runnable接口
class ThreadDemo2 implements Runnable{
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("R i : " + i);
}
}
public static void main(String[] args) {
ThreadDemo2 threadRunnable = new ThreadDemo2();
Thread thread = new Thread(threadRunnable);
thread.start();
}
}
//匿名类部类创建线程
class ThreadDemo3 {
public static void main(String[] args) {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("anonymous i : " + i);
}
}
});
thread.start();
}
}
//实现 Callable 接口
class ThreadDemo4 implements Callable{
@Override
public Object call() throws Exception {
for (int i = 0; i < 10; i++) {
System.out.println("Callable i : " + i);
}
return null;
}
public static void main(String[] args) {
FutureTask task = new FutureTask(new ThreadDemo4());
Thread thread = new Thread(task);
thread.start();
}
}
使用多线程目的:提高程序效率。
使用场景:分批发送短信,迅雷等工具下载。