Java并发操作,多线程

本文深入探讨了Java中的多线程实现,包括Thread、Runnable和Callable。同时,介绍了线程同步方法如Thread.sleep()、wait/notify以及Condition,并分析了ExecutorService的不同线程池实现。此外,还详细讨论了synchronized关键字、volatile、Lock机制、并发工具如CountDownLatch、CyclicBarrier、Future以及并发集合如Atomic原子类、Vector、Collections.synchronizedList、CopyOnWriteArrayList和ConcurrentHashMap的应用和优缺点。
摘要由CSDN通过智能技术生成

Thread/Runable/Callable:多线程的三个实现方式

适用场景:多线程编程

优点:Callable 的call方法有返回值,Runable/Callable为接口,能多实现

缺点:Thread为抽象类,只能单继承

Thread.sleep(millis)/Object.wait()/Object.notify()/Object.notifyAll()/Object.join()/Condition.await()/Condition.signal()/

Condiction.signalAll()

适用场景:涉及到线程通讯问题的场景

ExecutorService:能创建自定义条件的线程池

优点:能很好的管理线程的生命周期,不需要付出频繁创建和销毁线程的代价

缺点:

适用场景:

1.ExecutorService.newFixedThreadPool(nThreads):

(1)总是维护固定数量的核心线程数(即活动线程数总是和最大线程数一致),哪怕都没有任务需要执行。 (2)没有所谓的非空闲时间,即keepAliveTime为0。即线程一闲下来就会被马上回收 (3)阻塞队列为无界队列LinkedBlockingQueue。 使用场景:FixedThreadPool 应该尽可能的少的分配线程。适用执行周期较长,但是提交频率较低的任务。因为如果提交频率太高,会导致过多的任务被放到队列中,导致OOM。

2.ExecutorSe

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值