
Java高并发程序设计学习总结
Java高并发程序设计学习总结
Tyxxxxxxx
这个作者很懒,什么都没留下…
展开
-
Java高并发程序设计——锁的优化
锁的优化一、为什么要进行锁的优化?在高并发的环境下,激烈的锁竞争会导致程序的性能下降,而使用多线程虽然可以明显提高系统的性能,但是也会额外增加系统的开销,因此要进行锁的优化二、提高锁性能的方法1、减少锁的持有时间只对必要的代码进行同步,而不必要同步的代码可以放在同步块外,这样可以明显减少线程持有锁的时间,提高系统的吞吐量。如下图:若只有mutextMethod()方法需要同步,而ot...原创 2020-03-28 00:01:55 · 123 阅读 · 0 评论 -
Java高并发程序设计——线程池
线程池一、为什么要采用线程池?线程虽然是一种轻量级的工具,但是创建与关闭线程依然需要花费时间,如果为每一个小的任务都创建一个线程,则有可能创建和销毁线程所占用的时间大于线程真实工作所消耗的时间。其次,线程本身也占用空间,大量线程会抢占内存资源,如果处理不当,可能导致Out of Memory异常,或者大量的线程回收也会给GC带来很大的压力,延长GC的停顿时间。因此必须对线程加以控制和管理。...原创 2020-03-27 14:38:42 · 166 阅读 · 0 评论 -
Java高并发程序设计——锁
锁进行同步控制,不止有synchronzied一种手段,还有重入锁、读写锁等等,更好地线程同步进行控制。一、重入锁1、什么是重入锁重入锁可以代替synchronized关键字、Object.wait()、Object.notify(),并进行了扩展。重入锁有着显示的操作过程,必须手动指定何时加锁,何时释放锁,因此其灵活性要优于synchronized。要注意的是,在退出临界区时必须要记得...原创 2020-03-25 00:23:56 · 148 阅读 · 0 评论 -
Java高并发程序设计——无锁
Java高并发程序设计——无锁一、无锁与有锁区别?对于并发控制而言,锁是一种悲观的策略。它总是假设每次的临界区的操作会产生冲突,因此,必须对每次操作都小心翼翼。如果有多个线程同时需要访问临界区资源,则宁可牺牲性能让线程进行等待,因此说锁会阻塞线程执行。而无锁是一种乐观的策略,它会假设对资源的访问是没有冲突的。既然没有冲突,自然不需要等待,所以所有的线程都可以在不停顿的状态下持续执行,如果遇到冲...原创 2020-03-23 23:38:36 · 339 阅读 · 0 评论 -
Java高并发程序设计——线程的基本操作
Java高并发程序设计——线程的基本操作一、新建线程1、新建线程Thread t1=new Thread();t1.start();2、start()方法执行后会新建一个线程执行run()方法,如果是直接调用run()方法,也可以正常执行,但是不能新建一个线程,而是在当前线程中调用run()方法,只是作为一个普通的方法调用。3、两种方法创建线程代码:继承Thread类、实现Runab...原创 2020-03-21 23:08:17 · 95 阅读 · 0 评论 -
Java高并发程序设计——基本概念
Java高并发程序设计——基本概念一、同步和异步同步和异步通常用来形容一次方法调用同步调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。异步方法一旦开始,方法调用就会立即返回,调用者可以继续进行后续的工作,异步方法通常会在另外一个线程中执行。二、并发和并行它们都可以表示两个或者多个任务一起执行,但是有区别。并行的多个任务是同时执行,而并发是交替执行三、临界区临界区...原创 2020-03-20 22:32:06 · 198 阅读 · 0 评论