-
Java多线程对耗时方法的同步问题25
各位大牛,小弟现在遇到一个问题,就是使用多线程调用一个耗时的方法,如何同步?代码大体如下:
final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(10); final BusinessService service = new BusinessService(); for(int i = 0; i < 10; i++) { scheduler.scheduleWithFixedDelay(new Runnable(){ @Override public void run() { service.handleBusiness(); } }, i, 5, TimeUnit.MINUTES); }
这个时候,如果在handleBusiness()方法上加上synchronized
,其它线程就进不了这个方法,因为这个方法需要耗时5分钟左右,大家帮忙想想有啥好的解决办法,能让所有线程不等待,就可以调用这个方法又保持原子操作2013年1月13日 19:54
12个答案 按时间排序 按投票排序
-
handleBusiness这个方法能做到线程安全就不需要synchronize,做不到就必须用synchronize或再深入handleBusiness同步里面具体的某个操作。就像servlet一样,doget和dopost必须保证线程安全,如果不能保证,就要在里面做同步。
2013年1月15日 11:05
-
LZ 是不是就想顺序执行这几个service吧,我觉得没有这么复杂吧:
把for循环放到线程中执行就行了:BusinessService service = new BusinessService(); new Thread() { public void run() { //service 连续执行10次 for (int i = 0; i<10; i++) { service.handleService(); } } }.start()
2013年1月15日 09:11
-
你这个需求本身就是矛盾的,结构设计肯定存在不合理的地方,既然你在handleBusiness();方法加上synchrozied就保证了多个线程会逐个调用该方法,那么多线程的意义何在?还会白白增加开启线程、调度线程的开销。如果实时性不高的话可以考虑异步处理请求
2013年1月14日 23:52
-
建议 : 1. 方法上枷锁 2.在service这个类中 添加一个判断变量
run方法执行时 先判断这个变量 是否有效 然后决定是否执行handleBussiness方法 执行 完bussiness方法后 将那个变量在变成 有效2013年1月14日 10:21
-
可以使用wait-free算法来实现,从而避免使用synchronized关键字。可以参考一下类似于AtomicInteger这样的类,比如incrementAndGet()方法。
2013年1月14日 10:18
-
你要保证 service.handleBusiness(); 这个方法的原子性 。又要很多线程瑶掉这个方法。这个本身就是对立的
建议
把这个方法 在for循环外面写成单线程慢慢处理就行。2013年1月14日 09:43
相关推荐
总之,实现Java多线程进度条涉及线程同步、共享数据更新以及UI更新的协调。理解这些核心概念,并根据具体需求选择合适的方法,是构建高效、用户友好进度条的关键。在ProgressTest这个示例项目中,你可能会找到更多...
单线程模型简化了程序设计,降低了程序复杂度,使得开发者可以更专注于业务逻辑的实现,而无需过多考虑多线程间的同步问题。 单线程的优势主要体现在以下几个方面: 1. **简化程序设计**:由于无需处理多线程间的...
在Java编程中,多线程是一项关键特性,它允许程序同时执行多个任务,极大地提高了效率。本实例将探讨如何利用Java实现一个具有进度条显示功能的多线程应用。进度条通常用于可视化地表示某个任务的完成程度,这对于长...
Java多线程实现数据切割批量执行,实现限流操作。 java线程池Executors实现数据批量操作。 批量异步Executors处理数据,实现限流操作,QPS限流。 线程池调用第三方接口限流实现逻辑。 案例适合: 1.批量处理大数据。...
总之,Java多线程和异步调用是构建高效、响应迅速的应用程序的关键技术。通过合理利用这些工具和机制,开发者可以编写出能够充分利用多核处理器优势的代码,从而提高软件性能。在实际应用中,理解并熟练掌握这些概念...
### Java多线程知识点详解 #### 一、Java多线程概述 **Java多线程**是指在Java程序中能够同时执行多个线程的技术。这种技术使得程序可以在多个任务之间并发执行,从而提高了程序的效率和资源利用率。本文将根据...
### JAVA多线程案例教学详析 #### 一、引言 随着计算机技术的发展,多核处理器已经成为标准配置,为了充分利用硬件资源,提高程序的执行效率,多线程编程成为了现代软件开发中不可或缺的一部分。Java作为一种广泛...
### Java多线程的使用与介绍 #### 什么是多线程? 多线程是指程序能够同时执行多个线程的能力。每个线程都是一个轻量级的进程,可以在单个程序中独立运行,共享该程序的资源。在Java中,多线程是通过`java.lang....
### Java分布式应用学习笔记05多线程下的并发同步器 #### 1. 前言 在现代软件开发中,特别是在分布式系统和高性能计算领域,有效地管理多线程之间的协同工作至关重要。Java语言提供了丰富的工具和API来帮助开发者...
### Java多线程并发知识点详解 #### 一、Java多线程并发简介 在现代软件开发中,特别是在Java这样的主流编程语言中,多线程并发技术是提高程序执行效率、优化资源利用的关键手段之一。本篇文章将深入探讨Java中的...
### Java多线程学习资料知识点解析 #### 一、引言 Java作为一种广泛使用的编程语言,在并发编程领域具有独特的优势。多线程是Java中实现并发处理的核心技术之一,能够显著提升程序的性能和响应性。本文将深入探讨...
"JAVA多线程聊天工具"是一个基于Java实现的简单应用,它利用了多线程的概念来创建一个实时、互动的聊天环境。在这个聊天工具中,每个用户都可以在不同的线程中运行,允许他们同时进行交谈,从而提供了一个并行的交流...
Java多线程知识点梳理: 1. Java线程基础知识 - 线程是程序中独立的、并发的执行路径。每个线程都有自己的堆栈、程序计数器和局部变量,但与分隔的进程不同,线程之间的隔离程度较小,它们共享内存、文件句柄等...
Java多线程则是为了解决这个问题而引入的概念。通过创建多个线程,程序可以在同一时间执行多个任务,提高了CPU的利用率和程序的响应速度。多线程可以分为并发和并行两种。并发是在单核CPU中,通过快速切换线程执行来...
### 经典Java多线程资料知识点解析 #### 一、基本原理 ...以上内容涵盖了关于Java多线程的基本概念、线程的创建与启动方式以及线程的生命周期等方面的知识点,希望能对学习Java多线程技术的朋友有所帮助。
### Java多线程详解:深度探索Java线程机制 #### 知识点一:线程与进程的区别 在深入探讨Java多线程之前,我们首先需要理解线程与进程的基本概念及其区别。进程是资源分配的基本单位,拥有独立的内存空间,而线程...
Java多线程断点续传下载是一个复杂但实用的技术,尤其在处理大文件或网络不稳定时,能够提高用户体验并优化资源利用。以下是对这个主题的详细解析: **1. Java多线程** Java多线程是指在一个Java应用程序中同时执行...
在Java多线程编程环境中实现单例模式时,需要格外注意线程安全问题。通过对惰性加载机制的理解以及对不同解决方案的探讨,我们可以选择最适合项目需求的方法来实现高效的单例模式。无论是使用同步方法还是双重检查...
### Java多线程编程知识点详解 #### 一、线程基础概述 - **定义与特点:** - **线程**是一种比进程更细粒度的执行单元,它允许在一个进程中并发执行多个任务。 - **轻量级进程**:线程有时被称为轻量级进程,...