Java-多线程/进程相关
peacejl
这个作者很懒,什么都没留下…
展开
-
Lock接口整理
Lock后于Synchronized出现Lock与Synchronized的不同它提供了与synchronized关键字类似的同步功能,只是在使用时需要显式地获取和释放锁。虽然它缺少了(通过synchronized块或者方法所提供的)隐式获取释放锁的便捷性,但是却拥有了锁获取与释放的可操作性、可中断的获取锁以及超时获取锁等多种synchronized关键字所不具备的同步特性。Java提供的Lock接口的实现ReentrantLockReentrantReadWriteLockLockSuppo原创 2020-12-13 12:36:09 · 137 阅读 · 0 评论 -
一个功能简单的线程池实现
功能:仅支持自动创建线程和线程复用import java.util.concurrent.LinkedBlockingQueue;import java.util.concurrent.ThreadPoolExecutor;/** */public class MyThreadPool { int corePoolSize; int currentPoolSize; LinkedBlockingQueue<Runnable> todoWorks = new LinkedB原创 2020-11-30 09:41:01 · 98 阅读 · 0 评论 -
阻塞/Java中实现阻塞有哪些方法?
什么是阻塞?没有找到权威定义。自己理解:通常在Java中,我们说到阻塞,主语是线程。可以理解为线程想要进行下去,但是由于条件没有具备,所以阻塞等待,直到条件具备,该线程知道(被唤醒?),而继续把线程进行下去。只要线程暂停-释放cpu使用权就算阻塞吗?Java中实现阻塞有哪些方法sleep() 方法释放CPU,不会释放锁suspend() 和 resume() 方法(在JDK中已经过期)不推荐使用 suspend() 去挂起线程的原因,是因为 suspend() 在导致线程暂停的同时,并不会原创 2020-10-29 13:53:29 · 1757 阅读 · 0 评论 -
信号量
什么是信号量?计数器,保存一个值,值代表有多少资源可以使用。一些人说不要使用“信号量”原因:信号量对应的功能可以使用互斥锁加条件变量来实现,因此信号量通常不是必要的(尽管它是更基本的原语);信号量的计数在本质上由用户维护,容易出错。其他人说法:在这样复杂的场景中使用信号量的最大问题是,简单的错误很容易导致死锁和/或竞争条件。当您有多个读取器和写入器时,这一点尤其正确。有了一个作家,事情就变得更简单了。如果您打算这样做,那么我强烈建议您首先使用有序的有限状态机对其建模,并让尽可能多的知识渊博原创 2020-10-28 20:20:59 · 164 阅读 · 0 评论 -
实现多线程的几种方式
多线程的底层实现?一定要用Thread或者Runnable接口才能实现多线程吗?一般用的时候都是继承Thread类吧原创 2020-10-29 10:04:47 · 118 阅读 · 0 评论 -
关于Java-线程池(ThreadPool)
为什么需要线程池?百度百科:一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价他人理解:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?Java中的线程池实现...原创 2020-10-29 10:02:40 · 514 阅读 · 0 评论 -
关于线程和进程、多线程相关理解
什么是线程和进程?进程和线程简单而基本靠谱的定义如下:进程:程序的一次执行线程:CPU的基本调度单位阮一峰理解:(1)进程是一个容器。(2)线程是容器中的工作单位。一个CPU同一时间只能处理一个进程吗?对的一个CPU同一时间只能处理一个线程吗?对的那么,一个进程可以同时由两个CPU处理吗?可以的,就是只有能实现多个cpu处理一个进程,才能用线程池充分使用所有的CPU资源;什么是多线程?多线程是指该进程中包含了多个线程。为什么要使用多线程?使用多线程的目的是充分利用cpu资原创 2020-10-29 10:04:32 · 146 阅读 · 0 评论 -
关于各种锁
乐观锁、悲观锁乐观锁认为别人不会修改,再修改后,在更新的时候会判断一下在此期间别人有没有去更新这个数据;悲观锁认为别人一定也会修改,独享锁、共享锁独享锁是指该锁一次只能被一个线程所持有。共享锁是指该锁可被多个线程所持有。举例:有些锁对于写时关闭的,但是对于读时多个线程开发的。互斥锁...原创 2020-10-15 11:56:48 · 282 阅读 · 0 评论 -
synchronized整理
synchronized是什么?并发编程时,为保证线程安全时用到synchronized的作用1、保证方法或者代码块在运行时,同一时刻只有一个方法可以进入到临界区;2、还可以保证共享变量的内存可见性synchronized锁的对象Java中每一个对象都可以作为锁,这是synchronized实现同步的基础。synchronized可以修饰的方法类型1、普通同步方法(实例方法),锁是当前实例对象 ,进入同步代码前要获得当前实例的锁2、静态同步方法,锁是当前类的class对象 ,进入同步代码前原创 2020-10-15 11:56:41 · 132 阅读 · 0 评论