Java26 多线程
单线程:只能1个程序在运行,运行结束后才能进行下一个程序。
多线程:能多个程序共同执行,提高效率。
程序运行原理
分时调度:所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时间。
抢占式调度:优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性),Java使用的为抢占式调度。
主线程就是main方法所在的线程,当我们只有一个main方法时,main方法从上往下挨个执行 这就是单线程
Thread类
构造方法
Thread()构造一个thread对象
Thread(String name)构造一个thread对象并且给对象起名字
常用方法
start()是该线程开始执行
run()线程执行时所走的代码
//创建自定义线程对象
MyThread mt = new MyThread
//开始执行
mt.start();
这样就能多线程的运作程序了
获取线程名称的方法
getname()返回当前线程的名称
main方法想要获取线程名称需要先获取当前线程对象
Thread.currentThread()
线程池
Runnable
Executors:线程池创建工厂类
public static ExecutorService newFixedThreadPool(int nThreads):返回线程池对象
ExecutorService:线程池类
Future<?> submit(Runnable task):获取线程池中的某一个线程对象,并执行
Future接口:用来记录线程任务执行完毕后产生的结果。线程池创建与使用
使用线程池中线程对象的步骤:
创建线程池对象
创建Runnable接口子类对象
提交Runnable接口子类对象
关闭线程池
Callable
Callable接口:与Runnable接口功能相似,用来指定线程的任务。其中的call()方法,用来返回线程任务执行完毕后的结果,call方法可抛出异常。
ExecutorService:线程池类
<T> Future<T> submit(Callable<T> task):获取线程池中的某一个线程对象,并执行线程中的call()方法
Future接口:用来记录线程任务执行完毕后产生的结果。线程池创建与使用
使用线程池中线程对象的步骤:
创建线程池对象
创建Callable接口子类对象
提交Callable接口子类对象
关闭线程池
简单的多线程抢票系统