多线程、并发编程

多线程

两个线程,一个输出字母,一个输出数字,交替输出

方式一: LockSupport.unpark(Thread1) 与 LockSupport.park()

方式二:定义一个volatile的变r,自旋锁

方式三:两个阻塞队列capacity=1,先从队列里面取值,取到值就输出,取不到就阻塞等待

方式四:synchronize、wait、notify
注意遍历输出完之后要notify对方,否则对方会一直wait

方式五:lock.new两个condition,T1在condition1上等待,输出后通知condition2,T2在condition2上等待,输出后通知condition1

volatile

  • 只要对volatile修饰的域产生写操作,所有的读操作都会看到这个修改,因为volatile域会被立即写入主存,而读操作就发生在主存中
  • 如果多个任务同时访问某个域,那么这个域就应该是volatile的,否则就应该同步来访问
  • 一个任务的任何写入操作对这个任务来说都是可视的,所以不需要volatile

线程与任务

  • 我们对线程没有任何实际控制权
  • 将任务附着在线程上,以使得线程驱动任务

正确使用线程池

	@Bean
    public ThreadPoolTaskExecutor threadPoolTaskExecutor(){
   
        ThreadPoolTaskExecutor poolTaskExecutor = new ThreadPoolTaskExecutor();
        // 核心线程数
        poolTaskExecutor.setCorePoolSize(10);
        // 线程池维护线程的最大数量,只有在缓冲队列满了之后才会申请超过核心线程数的线程
        poolTaskExecutor.setMaxPoolSize(100);
        // 缓存队列
        poolTaskExecutor.setQueueCapacity(50);
        // 核心线程之外的线程在空闲时间到达之后会被销毁
        poolTaskExecutor.setKeepAliveSeconds(200);
        // 异步方法内部线程名称
        poolTaskExecutor.setThreadNamePrefix("myThread-");

        // n当然不是只有CallerRunsPolicy一种可选
        poolTaskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
        poolTaskExecutor.initialize();
        return poolTaskExecutor;
    }
ThreadPoolExocutor 是一个executor
ThreadPoolTaskExecutor 是一个executor,还有定时调度功能
ExecutorService也是一个executor,
ScheduledExecutorService还是一个executor
newFixedThreadPool(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CountDownLatch是Java并发编程中的一种同步工具类。它的作用是允许一个或多个线程等待其他线程完成操作。CountDownLatch的构造函数接收一个计数值,当计数值变为0时,等待的线程就会被唤醒。使用CountDownLatch可以实现多线程并发编程中的线程协作。 与使用join方法等待多个线程执行完毕不同,CountDownLatch相对灵活。可以通过调用countDown方法来减少计数,唤醒被阻塞的线程。这使得多个线程可以同时进行,并在一定条件下等待其他线程完成后再继续执行。 CountDownLatch一般称为闭锁或计数器,它是Java并发编程中的一种多线程同步工具。它属于AQS(AbstractQueuedSynchronizer)体系的一员,可以实现线程之间的协作和同步操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Java多线程之并发工具类](https://download.csdn.net/download/weixin_38713057/13756829)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [java多线程并发之CountDownLatch](https://blog.csdn.net/weixin_42419762/article/details/116220340)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [多线程编程之 CountDownLatch](https://blog.csdn.net/jiangxiayouyu/article/details/118107977)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值