JavaSE基础知识篇系列(6-50)——线程Thread类


线程和进程:

线程:程序执行流的最小单元
进程:进程是线程的容器

Thread类:

Thread类是Java中用于处理线程事件的一个类。
启动线程的步骤:

  1. 创建Thread子类对象
  2. 子类对象调用方法start()

线程启动:

第一步:创建Thread子类(不用)

public class SubThread extends Thread{
	//重写run()方法
	public void run(){
		System.out.println(getName());
	}
}

第二步:调用对象方法start()

SubThread st = new SubThread();
//启动线程
st.start();

建议使用: 使用匿名内部类,实现多线程程序

new Thread(new Runnable() {
	@Override
	public void run() {
		//执行语句;
	}
}).start();

设置和获取线程名称:

设置线程名称(一般不用)

//设置线程名称
st.setName("旺财");

获取正在运行的线程名字:

String name = Thread.currentThread().getName()

线程的生命周期

线程生命状态

线程的方法

线程休眠

Thread.sleep(200);//休眠200ms

线程池

  1. 创建线程池:
//调用工厂类的静态方法,创建线程池对象
//返回线程池对象,是返回的接口
ExecutorService es = Executors.newFixedThreadPool(2);	//“2”为线程数量
  1. 创建线程子类,实现Runnable接口
public class ThreadPoolRunnable implements Runnable{
	@Override	//重写接口方法
	public void run() {
		System.out.println(Thread.currentThread().getName()+"线程提交任务");
	}
}
  1. 调用线程接口实现启动线程
//调用接口实现类中的
es.submit(new ThreadPoolRunnable());

实现异步求和(线程池案例)

  1. 创建求和线程子类
import java.util.concurrent.Callable;
public class GetSumCallable implements Callable<Integer> {
	private int a ;
	public GetSumCallable(int a){
		this.a = a;
	}
	public Integer call(){
		int sum = 0;
		for(int i = 1;i <= a; i++){
			sum = sum+i;
		}
		return sum;
	}
}
  1. 调用线程池的方法
public static void main(String[] args) throws InterruptedException, ExecutionException {
	ExecutorService es = Executors.newFixedThreadPool(2);
	Future<Integer> f1 = es.submit(new GetSumCallable(100));
	Future<Integer> f2 = es.submit(new GetSumCallable(100000));
	System.out.println(f1.get());
	System.out.println(f2.get());
	es.shutdown();	//摧毁线程池
}

线程复习思维导图:

在这里插入图片描述


猜你喜欢

转载自blog.csdn.net/jiangyi_1612101_03/article/details/84680064