当前位置: 首页 > news >正文

南京建设个人网站企业信用信息年度报告公示

南京建设个人网站,企业信用信息年度报告公示,小企业做网站选那种,长春做网站哪家好目录 进程与线程线程和进程的区别是什么#xff1f;线程分两种#xff1a;用户线程和守护线程线程创建四种方式run()和start()方法区别#xff1a;为什么调用 start() 方法时会执行 run() 方法#xff0c;为什么不能直接调用 run() 方法#xff1f;Runnable接口和Callable… 目录 进程与线程线程和进程的区别是什么线程分两种用户线程和守护线程线程创建四种方式run()和start()方法区别为什么调用 start() 方法时会执行 run() 方法为什么不能直接调用 run() 方法Runnable接口和Callable接口有何区别 线程声明周期的6种状态如何保证多线程安全的什么是线程安全如何保证多线程安全的线程同步和线程互斥的区别如何同步线程如何避免线程死锁死锁的四个必要条件避免线程死锁 如何优化多线程程序的性能 什么是线程池它的优点为什么要使用线程池创建线程池ThreadPoolExecutorThreadPoolExecutor构造函数七大参数拒绝任务策略 乐观锁和悲观锁的理解 进程与线程 什么进程 进程是资源CPU、内存等分配的基本单位它是程序执行时的一个实例。程序运行时系统就会创建一个进程并为它分配资源然后把该进程放入进程就绪队列进程调度器选中它的时候就会为它分配CPU时间程序开始真正运行。 什么是线程 线程是操作系统能够进行运算调度的最小单位它被包含在进程之中是进程中的实际运作单位。线程由CPU独立调度执行在多CPU环境下就允许多个线程同时运行。同样多线程也可以实现并发操作每个请求分配一个线程来处理。 对于单核CPU而言多线程就是一个CPU在来回的切换在交替执行。对于多核CPU而言多线程就是同时有多条执行路径在同时(并行)执行每个核执行一个线程多个核就有可能是一块同时执行的。 线程和进程的区别是什么 进程是资源分配的最小单位而线程是程序执行的最小单位。一个进程可以包含多个线程线程之间共享进程的资源但每个线程都有自己的栈空间和寄存器。 线程分两种用户线程和守护线程 用户线程如果主线程main停止掉不会影响用户线程用户线程可以继续运行。 守护线程为其他线程服务的如果主线程死亡守护线程如果没有执行完毕也要跟着一块死GC垃圾回收线程就是守护线程 线程创建四种方式 继承 Thread重写run方法实现 Runable重写run方法实现 Callable重写run方法Executors工具类创建线程池 一般推荐使用 ThreadPoolExecutor创建线程池 run()和start()方法区别 run()仅仅是封装被线程执行的代码直接调用是普通方法 start()首先启动了线程这时此线程处于就绪可运行状态然后再由jvm去调用该线程的run()方法。 为什么调用 start() 方法时会执行 run() 方法为什么不能直接调用 run() 方法 调用 start 方法方可启动线程并使线程进入就绪状态而 run 方法只是 thread 的一个普通方法调用还是在主线程里执行。 Runnable接口和Callable接口有何区别 相同点 Runnable和Callable都是接口都可以编写多线程程序都采用Thread.start()启动线程 不同点 Runnable接口run方法无返回值Callable接口call方法有返回值是个泛型和Futrue和FutureTask配合用来获取异步执行结果。Runable接口run方法只能抛出运行时的异常且无法捕获处理Callable接口call方法允许抛出异常可以获取异常信息。 线程声明周期的6种状态 创建又称初始化状态这个时候Thread才刚刚被new出来还没有被启动。 可运行表示已经调用Thread的start方法启动了随时等待CPU的调度此状态又被称为就绪状态。 阻塞在运行状态的时候可能因为某些原因导致运行状态的线程变成了阻塞状态 阻塞的情况分三种 (一). 等待阻塞运行状态中的线程执行 **wait()**方法JVM会把该线程放入等待队列(waitting queue)中使本线程进入到等待阻塞状态 (二). 同步阻塞线程在获取 synchronized 同步锁失败(因为锁被其它线程所占用)则JVM会把该线程放入锁池(lock pool)中线程会进入同步阻塞状态 (三). 其他阻塞: 通过调用线程的 **sleep()**或 **join()**或发出了 I/O 请求时线程会进入到阻塞状态。当 sleep()状态超时、join()等待线程终止或者超时、或者 I/O 处理完毕时线程重新转入就绪状态。 等待获取锁对象后调用wait()方法释放锁进入无线等待状态 计时等待调用sleep(参数)或wait(参数)后线程进入计时状态睡眠时间到了或wait时间到了再或者其它线程调用notify并获取到锁之后开始进入可运行状态避免了无期限的等待。 死亡表示已经正常执行完线程体run()中的方法了或者因为没有捕获的异常而终止run()方法了。 如何保证多线程安全的 什么是线程安全 线程安全指某个方法在多线程环境被调用能够正确处理多线程之间的共享变量是程序功能正确完成。 如何保证多线程安全的 使用安全类比如 java.util.concurrent 下的类使用原子类AtomicInteger使用自动锁 synchronized。使用手动锁 Lock。 线程同步和线程互斥的区别 线程同步当一个线程对共享数据进行操作的时候在没有完成相关操作时不允许其它的线程来打断它否则就会破坏数据的完整性必然会引起错误信息。 线程互斥线程互斥是站在共享资源的角度上看问题例如某个共享资源规定在某个时刻只能一个线程来访问我其它线程只能等待知道占有的资源者释放该资源线程互斥可以看作是一种特殊的线程同步。 如何同步线程 可以使用互斥锁、条件变量、信号量等机制来同步线程。互斥锁用于保护共享资源条件变量用于线程之间的通信信号量用于控制并发访问。 如何避免线程死锁 死锁的四个必要条件 互斥条件进程对所分配到的资源进行排他性控制即在一段时间内某资源仅为一个进程所占有。此时若有其他进程请求该资源则请求进程只能等待。 请求和保持条件进程已经获得了至少一个资源但又对其他资源发出请求而该资源已被其他进程占有此时该进程的请求被阻塞但又对自己获得的资源保持不放。 不可剥夺条件进程已获得的资源在未使用完毕之前不可被其他进程强行剥夺只能由自己释放。 循环等待条件存在一种进程资源的循环等待链链中每一个进程已获得的资源同时被 链中下一个进程所请求。 避免线程死锁 预防死锁的方式就是打破四个必要条件中的任意一个即可。 避免线程死锁的方法包括避免嵌套锁按照固定的顺序获取锁使用超时机制避免资源竞争等。此外还可以使用死锁检测工具来检测和解决死锁问题。 如何优化多线程程序的性能 可以采用以下方法来优化多线程程序的性能避免线程之间的竞争减少锁的使用使用无锁数据结构使用线程池等。此外还可以使用性能分析工具来找出程序的瓶颈进行优化。 什么是线程池它的优点 事先创建若干个可执行的线程放入一个池容器中需要的时候从池中获取线程不用自行创建使用完毕不需要销毁线程而是放回池中从而减少创建和销毁线程对象的开销。 优点 降低资源消耗重用存在的线程减少对象创建销毁的开销。提高响应速度可有效的控制最大并发线程数提高系统资源的使用率同时避免过多资源竞争避免堵塞。当任务到达时任务可以不需要的等到线程创建就能立即执行。提高线程的可管理性线程是稀缺资源如果无限制的创建不仅会消耗系统资源还会降低系统的稳定性使用线程池可以进行统一的分配调优和监控。附加功能提供定时执行、定期执行、单线程、并发数控制等功能。 为什么要使用线程池 如果我们在方法中直接new一个线程来处理当这个方法被调用频繁时就会创建很多线程不仅会消耗系统资源还会降低系统的稳定性一不小心把系统搞崩了。合理的使用线程池则可以避免把系统搞崩的窘境这说一下线程池的好处降低资源消耗、提高响应速度和提高线程的可管理性。 创建线程池ThreadPoolExecutor Executors和ThreaPoolExecutor创建线程池的区别 Executors 各个方法的弊端 newFixedThreadPool 和 newSingleThreadExecutor: 主要问题是堆积的请求处理队列可能会耗费非常大的内存甚至 OOM。newCachedThreadPool 和 newScheduledThreadPool: 主要问题是线程数最大数是 Integer.MAX_VALUE可能会创建数量非常多的线程甚至 OOM。 ThreadPoolExecutor创建线程池方式只有一种就是走它的构造函数参数自己指定。 ThreadPoolExecutor构造函数七大参数 核心线程数corePoolSize : 线程数定义了最小可以同时运行的线程数量最大线程数maximumPoolSize 线程池中允许存在的工作线程的最大数量允许线程空闲时间keepAliveTime线程池中的线程数量大于核心线程数的时候如果这时没有新的任务提交核心线程外的线程不会立即销毁而是会等待直到等待的时间超过了 空闲时间才会被回收销毁时间单位unit 参数的时间单位队列workQueue当新任务来的时候会先判断当前运行的线程数量是否达到核心线程数如果达到的话任务就会被存放在队列中线程工厂threadFactory为线程池提供创建新线程的线程工厂拒绝策略handler 线程池任务队列超过最大线程数之后的拒绝策略默认直接抛出异常。 拒绝任务策略 中止策略AbortPolicy抛出 RejectedExecutionException来拒绝新任务的处理调用者策略CallerRunsPolicy调用执行自己的线程运行任务抛弃策略DiscardPolicy什么都不做直接丢弃掉抛弃最老最老策略DiscardOldestPolicy丢弃最早的未处理的任务请求。 乐观锁和悲观锁的理解 乐观锁每个去拿数据的时候都认为别人不会修改所以不会都不会上锁但是在更新的时候会判断一下在此期间有没有去更新这个数据。所以乐观锁使用了多读的场合这样可以提高吞吐量像数据库提供的类似write_condition机制都是用的乐观锁。 悲观锁总是认为出现问题每次去拿数据的时候都会认为有人会修改所以每次在拿数据的时候都会上锁。这样别的对象想拿到数据那就必须堵塞直到拿到锁。传统的关系型数据库用到了很多这种锁机制比如读锁写锁在操作之前都会先上锁再比如Java的同步代码块synchronized/方法用的也是悲观锁。
http://www.dnsts.com.cn/news/36520.html

相关文章:

  • 中山手机网站制作多少钱舟山专业做网站
  • 网站策划书wordpress-5.0.3
  • html5手机微网站电商网站开发平台哪家好
  • 博客网站源码带后台阿里云虚拟主机网站吗
  • seo网站标题北京网站建设推广服务
  • 电子商务网站建设课设学生体会建建建设网站公司网站
  • 外贸网站推广机构网站404怎么解决
  • 道里网站运营培训网站设计形式
  • 手机网站宽度多少合适wordpress redis 刷新
  • python 电商网站开发云渲染网站开发
  • ip库网站源码国际化网站设计
  • 长沙最好网站建设网站建设视觉效果
  • 网站开发看掉一些功能东阳市城建设局网站
  • 电商网站商品页的优化目标是什么?免费网络游戏排行榜
  • 北京工程建设交易中心网站偃师做网站
  • 旅游景点网站建设毕业设计说明动力网站
  • 网站在手机上内页图不显示厦门百度seo点击软件
  • 我的网站搜索不到了领地免费网站
  • 泉州百度开户百度seo搜索引擎优化厂家
  • 网站app在线生成器太原市网站
  • y2学年做的租房网站网站首页设计及运行效果
  • 做网站需完成的软件铁路建设网站
  • 高端医疗网站建设wordpress在文章中加背景图片
  • 深圳住房网站app重庆网站建设培训
  • 网站制作分工wordpress后台颜色
  • 建设彩票网站多少钱合肥红酒网站建设
  • 网站背景自动变色重庆广告公司前十名
  • 百度网站建立指数基金有哪些
  • 中企动力网站建设 长春wordpress菜单右上角
  • 惠州网站排名提升百度不让访问危险网站怎么办