进程:指的正在运行的程序
单线程和多线程区别:单线程一次执行一个任务 多线程一个时间执行多个任务
抢占式调度:优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性),Java使用的为抢占式调度。
main是主线程,主线程是一个单线程
Thread类线程类
构造方法:
Thread():空参构造
Thread(String name):给线程起个名字
方法:
start():方法使该方法执行 开启线程start调用run方法
run()方法 描述线程任务,该线程要执行的操作
继承Thread后创建子类对象不仅是创建了一个子类对象在内存中还创建了一个栈
当调用start()方法时run()方法进入线程开的栈内存中
获取线程名称:方法
getName()返回该线程的名称 返回值String
currentThread()返回正在执行的线程的对象 静态的(static)放回值Thread当前线程对象
线程池
Runnable接口
方法:run()
实现Runnable接口:避免了继承Thread类的单继承局限性
Runnable接口
Executors:线程池创建工厂类里有个方法newFixedThreadPool(int nThreads):返回线程池对象(ExecutorService:线程池类) 这个方法是静态的
submit(Runnable task):获取线程池中的某一个线程对象,并执行
Callable<T>接口:
其中的call()方法,用来返回线程任务执行完毕后的结果,call方法可抛出异常。返回值是Future<>Callable接口是什么泛型Future就是什么泛型
newFixedThreadPool对象中有个get方法可以回去返回值