个人八股之多线程和线程池
前瞻环节大家好我是程序员无尽冬欢迎大家来到我的专栏。本篇我们将给大家讲解多线程和线程池 同时也会将它整理为我的个人八股分享给大家 希望大家可以喜欢。多线程首先让我们来了解一下线程的基本知识1.线程是什么⼀个线程就是⼀个 “执行流”. 每个线程之间都可以按照顺序执行自己的代码. 多个线程之间 “同时” 执行着多份代码,main()⼀般被称为主线程Main Thread。接着我们来了解一下进程和线程的区别进程是包含线程的. 每个进程至少有⼀个线程存在即主线程。进程和进程之间不共享内存空间. 同⼀个进程的线程之间共享同⼀个内存空间.进程是系统分配资源的最小单位线程是系统调度的最小单位。⼀个进程挂了⼀般不会影响到其他进程. 但是⼀个线程挂了, 可能把同进程内的其他线程⼀起带走(整 个进程崩溃)接下来区分一下并发和并行多线程的实现方式接下来是常见的一些线程操作的成员方法了解一下线程的生命周期多线程的具体实现操作1 书写时步骤可以 a循环 b同步代码块锁c 判断共享数据是否到了末尾 写到了末尾的情况 d 写没有到末尾的情况2 用锁名调用wait方法 目的是让当前线程跟锁绑定 之后唤醒时也可以唤醒当前锁绑定的全部线程3等待唤醒机制可以让两个线程均匀分布 12121212式阻塞队列4 阻塞队列的 put方法和take方法都自带lock锁阻塞队列二个对象都先用阻塞队列对象定义 不给值 用构造方法给出值publicclassCookextendsThread{ArrayBlockingQueueStringqueue;publicCook(ArrayBlockingQueueStringqueue){this.queuequeue;}Overridepublicvoidrun(){while(true){// 不断地把面条放到阻塞队列当中try{queue.put(一碗面);System.out.println(厨师放了一碗面);}catch(InterruptedExceptione)......demo类中 a先创建阻塞队列的对象 b创建线程的对象并把阻塞队列对象传递过去 c开启线程//1,创建阻塞队列的对象arrayblockingoueuestringqueuenewarrayblockingqueue(capacity:1);//2创建线程的对象并把阻塞队列传递过去 qcook cnewcookqueue;foodie fnewfoodiegueue;//3.开启线程c.start();f.start():线程的状态新建状态 new) 创建线程对象就绪状态 runnable) start方法阻塞状态 blocked 无法获得锁对象等待状态 waiting) wait方法计时等待 timedwaiting sleep方法结束状态 terminated) 全部代码运行完毕线程池什么是线程池线程池Thread Pool是一种基于池化技术的多线程处理形式用于管理线程的创建和生命周期以及提供一个用于并行执行任务的线程队列。线程池的主要目的是减少在创建和销毁线程时所花费的开销和资源提高程序性能同时也提供了对并发执行任务的更好管理例如控制线程数量。使用线程池的好处线程复用线程池中的线程可以被重复利用用于执行多个任务避免了频繁创建和销毁线程的性能开销。提高响应速度资源控制线程池可以限制系统中线程的最大数量防止因为线程数过多而消耗过多内存或者导致过高的上下文切换开销。更方便的管理通过线程池提供了可配置的参数如核心线程数、最大线程数、空闲线程存活时间、任务队列的大小等允许定制以适应不同的应用需求线程池主要核心原理1创建一个池子池子中是空的2 提交任务时池子会创建新的线程对象任务执行完毕线程归还给池子回再次提交任务时不需要创建新的线程直接复用已有的线程即可3但是如果提交任务时池子中没有空闲线程也无法创建新的线程任务就会排队等待自定义线程池线程池的应用框架中的应用Web服务器在处理HTTP请求时每个请求都可以作为一个独立的任务提交到线程池中由线程池中的线程处理这样做的好处是可以快速响应用户请求同时复用线程资源开发中的常见场景异步任务处理例如发送电子邮件、执行后台计算等这些都可以作为异步任务提交给线程池从而不会阻塞主程序的执行。并行数据处理比如我从mysql中去取出10万条数据结果集是一个List分批次处理每个批次1000条在for循环中循环的次数就是批次的数目每次循环会提交给线程池一个futureTask异步运算任务比如这里会分为100个批次那么会for循环100次提交100个futureTask异步运算任务线程池中的线程会并行去处理这些批次的数据然后再把每个处理后的批次组合为一个最终结果总结本期我们学习了多线程和线程池的基本知识并融合为自己的八股我是程序员无尽冬 感谢你的观看 如果对你有帮助 请一键三连支持一下最后分享一段话与大家共勉 所有的玫瑰都屹立在荆棘之上