引言
任务的执行
大多数并发应用程序都是围绕“任务执行(Task Execution)”来构造的:任务通常是一些抽象的且离散的工作单元。
任务通常是一些抽象的且离散的工作单元。通过把应用程序的工作分解到多个任务中,可以简化程序的组织结构,提供一种自然的事务边界来优化错误恢复过程,以及提供一种自然的并行工作结构来提升并发性。
一、在线程中执行任务
当围绕“任务执行”来设计应用程序时,第一步是要找出清晰的任务边界。
在理想情况下,各个任务之间是相互独立的:任务不依赖其他任务的状态,结果或边界效应。
独立性有助于实现并发,因为如果存在足够的处理资源,那么这些独立的任务都可以并行的执行。
在正常的负载下,服务器应用程序应该同时表现出良好的吞吐量和快速的响应性。应用程序提供商希望程序尽支持可能多的用户,从而降低每个用户的服务成本,而用户则希望获得尽可能快的响应。而且,当负荷过载时,应用程序的性能应该是逐渐降低,而不是直接失败。要实现上述目标,应该选择清晰的任务边界以及明确的任务执行策略。
大多数服务器应用程序都提供了一种自然的任务边界选择方式:以独立的客户请求为边界。比如Web服务器,邮件服务器,文件服务器,EJB容器以及数据库服务器等。
1.1 串行执行任务
应用程序中可以通过多种策略来调度任务,其中最简单的策略就是在单个线程中串行执行各项任务。
这是最经典的一个最简单的Socket server的例子,服务器的资源利用率非常低,因为单线程在等待I/O操作完成时,CPU处于空闲状态。从而阻塞了当前请求的延迟,还彻底阻止了其他等待中的请求被处理。
串行的处理机制通常无法提供高吞吐率或者快速响应性。不过也有一种例外,例如当任务数量很少且执行时间很长时,或者当服务器只为单个用户提供服务,并且客户每次只发出一个请求时。但大多数服务器并不是按照这种方式来工作的。
1.2 显示的创建的线程任务
通过为每个请求创建一个新的线程来提供服务,从而实现更高的响应性。如下所示:
只要请求的到达速率不超出服务器的处理能力,这种方法可以同时带来更快的响应性和更高的吞吐率。
1.3 无限制创建线程的不足
在生产环境中,“为每个任务分配一个线程”的做法存在一定缺陷,尤其在需要大量线程的场景:
线程生命周期的开销非常高。
线程的创建过程需要时间,延迟处理的请求,并且需要JVM和操作系统提供一些辅助帮助。如果请求的到达率非常高且请求的处理过程是轻量级的,那么为每个请求创建一个新线程会消耗大量的计算资源。
资源消耗。
活跃的线程会消耗系统资源,尤其是内存。如果已经拥有足够的多的线程使CPU保持忙碌状态,那么在创建更多的线程反而会降低性能。同时会有些线程将闲置,大量的空闲线程,那么会占用许多内存,给垃圾回收器带来压力。
稳定性。
可创建线程的数量存在一个限制。这个限制值将随着平台的不同而不同。如果超过了这些限制,那么很可能抛出OutOfMemoryError异常。
二、Executor框架
任务是一组逻辑工作单元,而线程则是使任务异步执行的机制。为每个任务分配一个线程的执行策略,不仅存在诸多不足,同时资源的管理也比较复杂。线程池简化了线程的管理工作,并且java.util.concurrent提供了一种灵活的线程池作为Executor框架的一部分。在Java类库中,任务执行的主要抽象不是THread而是Executor。
虽然 Executor 是个简单的接口,但是却为灵活且强大的异步任务执行框架提供了基础。该框架能支持多种不同类型的任务执行策略。它提供了一种标准的方法将任务的提交过程与执行过程解耦开来,并用Runnable来表示任务。Executor的实现还支持对生命周期的支持,以及统计信息的收集、应用程序管理机制和性能监视等机制。
Executor基于生产者—消费者设计模式,提交任务的操作单元相当于生产者(生成待完成的工作单元),执行任务的线程相当于消费者(执行完这些工作单元)。
2.1 示例:基于Executor的Web服务器
基于Executor来构建Web服务器是非常容易的。ThreadPerTaskWebServer使用了一种标准的Executor实现,即一个固定长度的线程池,可以容纳100个线程。
2.2 执行策略
Executor为任务提交和任务执行之间的解耦提供了标准的接口,你可以为某一类任务指定一个特定的执行策略。任务的执行策略定义了任务执行的“What、Where、When、How”,包括:
任务在什么线程中执行?(what?)
任务以什么顺序执行?(what?)
可以有多少个任务并发执行?(how many?)
可以有多少个任务进入等待执行队列?(how many?)
如果系统过载,需要放弃一个任务,应该挑选哪一个任务?(which?)另外,如何通知应用程序知道这一切呢?(how?)
在一个任务的执行前与结束后,应该做些什么?(what?)
执行策略是资源管理的工具。最佳的策略取决于你的计算资源和你对服务的要求。通过控制并发任务的数量,来保证你的任务不会因为计算资源不足而失败,也不会出现因为高并发带来争夺资源时的性能问题。
将任务的提交与执行解耦,还有助于在实现过程中选择一个与当前硬件最匹配的执行策略。
2.3 线程池
线程池,从字面含义卡,指的是管理一组同构工作线程的资源池。线程池与工作队列(Work Queue)密切相关有关,其中在工作队列中保存了所有等待执行的任务。工作者线程(Worker Theahd)的任务很简单:从工作队列中获取一个任务,执行任务,然后返回线程池并等待下一个任务。
使用线程池有一下几个几个优点:
1.通过重用现有的线程而不是创建新线程,可以避免线程创建和销毁的开销。
2.当请求到达时,工作线程通常已经存在,减少了等待线程创建的时间,从而提高响应性。
3.通过调整线程池的大小,可以创建足够多的线程以便使处理器保持忙碌状态,同时防止过多线程相互竞争资源,使应用程序耗尽内存或者失败,提高了应用程序稳定性。
类库提供了一个灵活的线程池以及一些有用的默认配置。通过Executor中的静态工厂方法之一来创建线程池:
a. newFixedThreadPool。
创建一个固定长度的线程池,每当提交一个任务时就创建一个线程,直到达到线程的最大数量,这是线程池的规模不再变化。如果某个线程由于发生了未预期的Exception而结束,那么线程池会补充一个新的线程。
b. newCachedThreadPool。
创建一个可缓存的线程池,如果线程池的当前规模超过了处理需求,那么会回收空闲的线程,而当需求增加时,则可以添加新的线程,线程池的规模不存在任何限制。
c. newSingleThreadPool。
是一个蛋线程Executor,她创建单个工作者线程执行任务。如果这个任务异常结束,则会创建另一个线程来代替。newSingleThreadPool确保依照任务在工作队列中的顺序来串行执行。
d. newScheduledThreadPool。
创建一个固定长度的线程池,而且以延迟或定时的方式来执行任务,类似于Timer。
从“为每个任务分配一个线程”策略变成基于线程池的策略,将对应用程序的稳定性产生重大的影响。Web服务器不会在高负载的情况下失败。也不会创建数千个线程来争夺有限的CPU和内存资源,因此服务器性能将平缓的降低。
使用Executor还可以实现各种调优,管理、监视、记录日志、错误报告和其他功能,如果不使用任务执行框架,那么要增加这些功能是非常困难的。
2.4 Executor的生命周期
我们已经知道如何创建一个Executor,但并没有讨论如何关闭它。Executor的实现通常会创建线程来执行任务,但JVM只有在所有(非守护线程)线程全部终止后才会退出。因此,如果无法正确地关闭Executor,那么JVM将无法结束。
既然Executor是为应用程序提供服务的,因而他们也是可关闭的,无论采用平缓的当时,还是粗暴的方式,并将在关闭操作中受影响的任务的状态反馈给应用程序。
ps:平缓的关闭形式:完成所有已经启动的任务,并且不再接受任何新的任务。粗暴的关闭形式:直接关掉机房的电源。
为了解决执行服务的生命周期问题,Executor扩展来ExecutorService接口,添加了一些用于生命周期管理的方法:
Executor有三种状态:运行(running)、关闭(shutting down) 和 终止(terminated)。
ExecutorService最初创建的时候是运行状态的。调用shutdown方法后,会启动一个平缓的关闭过程:停止接收新的任务,同时等待已经提交的任务完成--包括还未开始执行的任务。调用shutdownNow方法会启动一个强制关闭的过程:尝试取消所有运行中的任务和排列在队列中尚未开始执行的任务。
在Executor关闭后提交的任务将由“拒绝执行处理器处理(Rejected Execution Handler)”来处理。
它会抛弃任务,或者是的execute方法抛出一个未检查的RejectedExecutionException。
等所有任务都执行完成后,ExecutorService会进入终止状态;可以调用awaitTermination方法等待ExecutorService到达终止状态,也可以使用isTerminated方法轮询来ExecutorService是否已经终止。
通常在调用 awaitTermination 方法之后会立即调用shutdown,从而产生同步地关闭ExecutorService效果。
代码 6-8 LifecycleWebServer通过增加生命周期支持来扩展web服务的功能。
2.5 延迟任务与周期任务
使用Timer的弊端在于
如果某个任务执行时间过长,那么将破坏其他TimerTask的定时精确性(执行所有定时任务时只会创建一个线程),只支持基于绝对时间的调度机制,所以对系统时钟变化敏感
TimerTask抛出未检查异常后就会终止定时线程(不会捕获异常)
在Java5.0或者更高版本的JDK中,将很少使用Timer。
如果要构建自己的调度服务,那么可以使用DelayQueue。它实现了BlockingQueue,并为ScheduledThreadPoolExecutor提供调度功能。在DelayQueue中,只有某个元素逾期后才能从DelayQueue中执行take操作。从DelayQueue中返回的对象将根据他们的延迟时间排序。
三、找出可利用的并行性
Executor框架帮助指定执行策略,但如果要使用Executor,必须将任务表述为一个Runnable。在大多数的服务器应用程序中都存在一个明显任务边界:单个客户请求。但有时候任务的边界并非是显而易见的,例如在很多桌面应用程序中,即使是服务器应用程序在单个客户请求中仍可能存在可发掘的并行性,例如数据库服务器。
本节中我们将开发一些不同版本的组件,并且每个版本都实现了不同程度的并发性。该示例组件实现浏览器程序中的页面渲染(Page-Rendering)功能,它的作用是将HTML页面绘制到图像缓存中。为了简便,假设HTML页面只包含标签文本,以及预定大小的图片和URL。
3.1 示例:串行的页面渲染器
最简单的方法就是对HTM L文档进行串行处理。先绘制文本元素,同时为图像预留出矩形的站位空间,在处理完了第一遍文本后,程序在开始下载图像并绘制到相应的占位空间中。如下:
图像下载过程的大部分时间都是在等待IO操作执行完成,在这期间CPU几乎不做任何工作。因此,在这种串行执行方法中没有充分地利用CPU,是的页面的家在时间较长。通过将问题分解为多个独立的任务并发执行,能够获得更高的CPU利用率和响应灵敏度。
3.2 携带结果的任务 Callable与Future
Executor框架使用Runnable作为其基本的任务表示形式。Runnable是一种有很大局限的抽象,虽然run能写入到日志文件或者将结果放入某个共享的数据结构,但它不能返回一个值或者抛出一个受检查的异常。
许多任务实际上都是存在延迟的计算:计算某个复杂的功能或者执行数据库查询,从网络上获取资源。对于这些任务,Callable是一种更好的抽象:它认为主入口点(即call)将返回一个值,并可能抛出一个异常。
Runnalbe和Callable描述的都是抽象的计算任务。这些任务通常是有范围的,即都有一个明确的起始点,并且最终会结束。Executor执行的任务有4个生命周期阶段:创建、提交、开始和完成。有时希望取消某些任务的执行。
Future表示了一个任务的生命周期,并提供了相应的方法判断是否完成或被取消以及获取执行结果,以及获取任务的结构和取消任务等。
get方法的行为取决于任务的状态:尚未开始,正在执行,已完成。
如果任务已经完成,那么将立即返回或抛出一个 Exception;
如果任务没有完成,那么get将阻塞,直到任务完成;
如果任务抛出了异常,那么个get将该异常封装为 ExecutionException并重新抛出;
如果任务被取消,那么get将抛出CancellationException,同时还可以通过getCause来获得被封装的初始异常;
可以通过许多种方法创建一个Future来描述任务:
ExecutorService中的所有submit方法都将返回一个Future,从而将一个Runnable或Callable提交给Executor。
还可以显示的为某个指定的Runnable或者Callable实力化一个 FutureTask。FutureTask实现了Runnable,因此可以将它提交给Executor来执行,或者直接调用其run方法。
从Java 6开始,ExecutorService实现可以改写AbstractExecutorService中的newTaskFor方法,从而根据已经提交的Runnable或Callable来控制Future的实例化过程。在默认实现中仅创建了一个新的FutureTask,代码:
在将Runnable或Callable提交到Executor到Executor的过程中,包含了一个安全发布,即将任务从提交线程发布到最终的执行线程。类似的,在设置Future结果的过程中也包含一个安全的发布,即将这个结果从执行线程发布到任何通过get方法获得它的线程。
3.3 示例:使用Future 实现页面渲染器
为了使页面渲染器实现更高的并发性,将渲染的过程分解为两个任务,一个是渲染所有的文本(CPU密集型),另一个是下载所有的图像(IO密集型)。
Get方法拥有“状态依赖”的内在特性,因而调用者不需要知道任务的状态,此外在任务提交和获得结果中包含的安全发布属性也确保了这个方法是线程安全的。
3.4 在异构任务并行化中存在的局限
在上面的FutureRender中使用了两个任务,一个是负责渲染文本,一个是负责渲染图片。如果渲染文本的速度远远高于渲染图片的速度,那么程序的最终性能与串行执行的性能差别并不大,而代码却变复杂了。
然而,通过对异构任务进行并行化来获得很大的性能提升是困难的。只有当大量相互独立且同构的任务可以并发进行处理时,才能体现出将程序的工作负载分配到多个任务中带来的真正的性能提升。
3.5 CompletionService:Executor 与 BlockingQueue
如果向Executor提交了一组计算任务,并且希望在计算完成后获得结果,那么可以保留与每个任务关联的Future,然后反复使用get方法,同时将参数timeout指定为0,从而通过轮询来判断任务是否完成。这种方法虽然可行,但却有些繁琐。幸运的是,还有一种更好的方法:CompletionService 完成服务。
CompletionService将Executor和BlockingQueue的功能融合在一起。可以通过将Callable任务提交给她来执行,然后使用类似于队列操作的take和poll等方法来获得已完成的结果,而这些结果也会在完成时将被封装为Future。ExecutorCompletionService实现了CompletionService,并将计算部分委托给一个Executor。
3.6 示例:使用 CompletionService 实现页面渲染
通过CompletionService从两个方面来提高页面渲染器的性能:缩短总运行时间以及提高响应性。
为每一幅图像的下载都创建一个独立任务,并在线程池中执行他们,从而将串行的下载过程转换为并行的过程,这将减少下载所有图像的总时间。
代码 6-15 使用CompletionService,使页面在下载完成后立即显示出来:
3.7 为任务设置时限
有时候,如果某个任务无法在指定时间内完成,那么将不再需要它的结果,此时可以放弃这个任务。
例如,某个Web应用程序从外部的广告服务器上获取广告信息,但如果应用程序在2秒内得不到响应,那么将显示一个默认的广告,这样即使不能获得广告信息,也不会降低站点的响应性能。
在有限时间内执行任务的主要困难在于,要确保得到的答案的时间不会超过限定的时间,或者在限定的时间内无法获得答案。在支持时间限制的Future.get中支持这种需求:当结果可用时,它立即返回,如果在指定时限内没有计算出结果,那么将抛出TimeoutException。
在使用时限任务时需要注意,当这些任务超时后应该立即停止,从而避免为继续计算一个不再使用的结果而浪费计算资源。因此在get方法抛出TimeoutException时,可以通过Future来取消任务。
3.8 示例:旅行预订门户网站
“预订时间”方法可以很容易地扩展到任意数量的任务上。考虑这样一个旅行预订门户网站:用户输入旅行的日期和其他要求,门户网站获取并显示来自多条航线、旅店和汽车租赁公司的报价。在获取不同公司报价的过程中,可能会调用Web服务、访问数据库、制定一个EDI事物或者其他机制。在这种情况下,不宜让页面的响应时间受限于最慢的响应时间,而应该只显示指定时间内收到的信息。对于没有及时响应的服务提供者,页面可以忽略他们,或者其他操作。
从一个公司获取报价的过程与其他公司获得报价的过程无关,因此可以将获取报价的过程当成一个任务,从而使获得报价的过程能并发执行。创建n个任务,将其提交到线程池,保留n个Futrue,并使用限时的get方法通过Future串行地获取每一个结果,这一切都很简单,但我们还可以使用一个更简单的方法——invokeAll。
在程序6-17中使用了支持时限的inokAll,将多个任务提交到一个ExecutorService并获得结果。
invokeAll方法有以下几个特性:
invokeAll方法的参数为一组任务,并返回一组Future。这两个集合有着相同的结构。invokeAll按照任务集合中迭代器的顺讯将所有的Future添加到返回的集合中,从而使调用者能将各个Future与其表示的Callable关联起来。
当所有任务都执行完毕时,或者调用线程被中断时,又或者超过指定时限时,ivokeAll将返回。
当超过指定时限后,任何还未完成的任务都会取消。
当invokeAll返回后,每个任务要么正常地完成,要么被取消,而客户端代码可以调用get或者isCancelled来判断究竟是何种情况。
四、小结
通过围绕任务执行来设计应用程序,可以简化开发的过程,并有助于实现并发。
Executor框架将任务提交与执行策略解耦开来,同时还支持多种不同类型的执行策略。
想要在将应用程序分别为不同的任务时获得最大的好处,必须定义清晰的任务边界。
作者:xuxh120
来源:https://www.cnblogs.com/xuxh120/p/15913428.html
标签: Executor
凡注有"三板富 | 专注于新三板的第一垂直服务平台"或电头为"三板富 | 专注于新三板的第一垂直服务平台"的稿件,均为三板富 | 专注于新三板的第一垂直服务平台独家版权所有,未经许可不得转载或镜像;授权转载必须注明来源为"三板富 | 专注于新三板的第一垂直服务平台",并保留"三板富 | 专注于新三板的第一垂直服务平台"的电头。
- 脂肪粒如何消除视频(脂肪粒如何消除)
- 百达智能拟将持有宁波百秦14%的140万股权转让给宁波源盛 交易价格不超过140万
- 信邦智能:已与广汽丰田、东风日产、比亚迪等客户在新能源行业开展合作-环球关注
- 上海凯宝:公司子公司顺捷医药拥有《医疗器械经营许可证》资质证书 可开拓医疗器械相关领域的业务-焦点观察
- 翰宇药业醋酸加尼瑞克原料药在美获批
- 东方雨虹(002271)龙虎榜数据(11-11)-全球视点
- 博世科:与华友钴业方面签署新能源电池材料回收利用合作协议-世界热文
- 丢掉苹果订单后 歌尔还将失去面包房-每日视讯
- 菲鹏生物携手华润医疗器械 共同打造IVD开放平台生态
- 格林斯达控股股东戴恩平配偶沈娇拟以9.5万的价格向安徽格林斯达环保设备有限公司转让别克牌汽车-关注
- 罗 牛 山:截止2022年9月末 公司生猪存栏数 45.75万头 其中种猪4.20万头-全球要闻
- 美股盘前要点 | 美股盘前走高 美元指数进一步走低 美国金融条件指数单日跌超50基点-当前简讯
- 工信部等部门:支持培育一批智能光伏示范企业-全球百事通
- “第二支箭”支持民营房企发债:美的置业、碧桂园等房企正沟通对接发债注册意向-今日快讯
- 方天股份拟增加与江苏纳邦数字技术有限公司的关联交易额 交易总金额不超过1300万-天天看点
- 湖北能源:拟54亿元投建江陵电厂二期扩建项目及新能源配套项目-当前要闻
- 电子税务局怎样导出财务报表(厦门市电子税务局财务报表在哪里导出)
- 说说心里话!-天天即时看
- 中青宝:拟购买广州宝云100%股权 14日起复牌-环球动态
- 润贝航科与南方航空签署合作项目,前三季度研发投入同比增30%
- 华联医疗拟向银行申请4500万承兑汇票 全资控股子公司提供连带责任担保-全球热推荐
- 雅化集团:拟向DMCC公司采购锂辉石矿产品-每日速看
- 当代置业(01107.HK):重组生效日期预期为11月18日或之前-每日观点
- 速腾聚创公布新一轮战略融资 多个产业投资方齐聚
- 英记茶庄集团(08241)发布中期业绩 净亏损366.1万港元 同比减少23.54%-天天微头条
- 顺鑫农业:拟对5款牛栏山陈酿产品提价-天天快资讯
- 云天化新能源材料项目加速落地 2023年起磷酸铁锂产能将逐步释放-天天信息
- 百达智能拟购买袁迪欢所持有的金百达10%的100万股权 交易完成后公司持有金百达60%股权-世界观天下
- 中科云网(002306.SZ):正与江苏省包括徐州市在内的多地市政府部门洽谈项目执行相关事宜-天天头条
- 京唐城际铁路开始试运行 北京通州至河北唐山最快39分钟
- 花架子什么意思简解(花架子什么意思)
- 北交所将于11月12日开展新增北交所证券类别通关测试-世界焦点
- 大禹节水:联合体收到37亿元江西省梅江灌区项目成交通知书-时快讯
- 南都电源:子公司拟6000万元向关联方购买锂离子电池绿色高效循环利用项目机器设备及无形资产-世界通讯
- 中国奥园10月销售额约9亿元 尚未披露去年年报及今年中报
- 北交所推出融资融券制度
- 十厘米参照物示意图(十厘米)
- 住房公积金上调意味着什么?有哪些好处?-热推荐
- 移为通信(300590.SZ):11.1825万股限制性股票将归属、上市流通-天天精选
- 百胜中国恢复开店步伐 近8个交易日股价涨幅超过20%
- 砍单风波中的歌尔股份-每日视讯
- 公告精选:顺鑫农业拟对5款牛栏山陈酿进行提价;三七互娱拟3亿元-6亿元回购股份-天天热点评
- 中指快评:杭州取消“认房又认贷”,二套首付最低四成-实时
- 中指快评:《天津津城城市更新规划指引(2021—2035年)》公开征求意见-当前热点
- 探寻数字化浪潮下的数字化转型之路-世界快播报
- 中大力德(002896)龙虎榜数据(11-11)-每日时讯
- “10连板”上涨1.6倍!供销社概念股天鹅股份将停牌核查
- 南都电源(300068.SZ):拟开展融资租赁业务、融资合计不超8.7亿元
- 港股创新药ETF(513120)涨4.86%,康希诺生物涨超14%-天天观热点
- 粤海饲料:公司与国内从事水产养殖、水产饲料经销业务的供销社及农民养殖专业合作社有业务合作-当前简讯
- 首届全球数字贸易博览会将在浙江杭州开幕
- 南都电源:子公司拟购买锂离子电池绿色高效循环利用项目资产-每日快播
- 瑞风新能源(00527.HK):已成立合营公司红松新能源(东营)有限公司-世界热头条
- 办理房产证所需要的材料有哪些?房产证土地使用权证办理程序-天天热头条
- 上峰水泥:出资5000万元与傲林科技、南方水泥合资设立建材数智研究院-环球视讯
- 今年双11中小主播日子难过:商家难被割韭菜,免坑位费免佣金抢资源,明星光环也不好使
- 银涛控股(01943.HK)料中期录得亏损净额约1000万-1500万港元-天天观速讯
- 中国金融投资管理(00605.HK)向上市覆核委员会提出覆核有关撤销上市的决定请求-全球报资讯
- 北京特种机械研究所携三大体系亮相中国航展
- 走进深圳坪山生物医药研究院 感受产业创新活力
- 1060显卡吃鸡设置最佳性能(1060显卡吃鸡设置最佳)
- 微信收不到消息(微信收不到消息)
- 河南电气每10股派现0.41元 共计派发现金红利206万
- 孚能科技完成超33亿元定增 为何被三家广州国资企业包揽?-每日消息
- 中达安:公司控制权拟发生变更
- 德联集团(002666.SZ):部分董监高拟合计减持不超84.58万股-天天热议
- 申朴信息每10股派现6.8元 共计派发现金红利2053.26万-焦点观察
- 永成股份权益分派实施 每10股转增2.1股 共计转增210万股-世界聚看点
- 圣邦股份(300661.SZ):荣基香港拟减持不超47.04万股-世界头条
- 鑫宇科技每10股派现3.3元 共计派发现金红利3033.25万-环球热推荐
- PF GROUP(08221)附属太平基业证券授出4600万港元融资贷款-视点
- 注意!怡亚通将于11月28日召开股东大会-最新快讯
- 一顿操作猛如虎 最后便宜两毛八 波司登这种价格套路怎么破?
- 宏景科技(301396)龙虎榜数据(11-11)-当前资讯
- 东方国信:公司有Web3.0底层技术栈储备 包括区块链、云计算、人工智能、数字孪生/元宇宙-观焦点
- 中南文化(002445.SZ):华润信托自6月6日起已累计减持5%股份-天天热资讯
- 信安世纪:拟收购普世科技80%股权 14日起停牌
- 榕基软件跌停 龙虎榜上机构买入5076.33万元 卖出35.88万元-世界讯息
- 隔夜美股史诗级暴涨,港股互联网ETF(513770)大涨超7%!
- 实益达(002137)龙虎榜数据(10-27)-全球消息
- 比优集团(08053)发布中期业绩 股东应占溢利9643.1万元 同比增加12.74%-全球头条
- 大宗交易:联创光电成交892.15万元,折价9.03%(11-11)
- 湖北能源:拟约54亿元投建江陵电厂二期扩建项目及新能源配套项目
- 联君科技每10股派现6.8元 共计派发现金红利1700万-每日焦点
- 什么是阳光工程(什么是阳包阴)
- 酷我音乐vip账号2021(酷我音乐vip账号密码)
- 麦捷科技:比亚迪是公司重点拓展的客户之一
- 百事达注销控股孙公司深圳百思童科技有限公司-焦点报道
- 丰岛食品及子公司以抵押、保证方式向银行合计申请1.34亿授信额度-环球观天下
- 国美1亿持股被冻结,创始人黄光裕夫妇密集套现-今日快讯
- 安道设计拟利用闲置募集资金不超过2000万(含2000万)购买银行理财产品-观点
- 星湖科技:公司目前尚未开通微博
- 恒大深圳湾地块75亿元挂牌转让:处于抵押状态,已停工超1年-环球热闻
- YGM TRADING(00375.HK)盈警:预计中期税后综合亏损2500万港元
- 青海华鼎(600243)龙虎榜数据(11-11)-世界微头条
- 博大新材全资子公司惠州天选拟购买土地使用权 预计总价不超过2300万-环球热推荐
- 小商品城:拟减免小微企业或个体工商户租金
- 川发龙蟒(002312.SZ):就收购重钢矿业49%的股权已完成过户-天天看热讯
- 普门科技(688389.SH):瀚钰生物、瑞普医疗、瑞源成健康拟减持合计不超6%股份-观察
- 聚焦粤港澳大湾区生物医药发展,2022粤港澳大湾区生物医药企业十强揭晓-天天即时看
公司
焦点
精彩推送
- 大港股份(002077)龙虎榜数据(11-11)-环球讯息
- 潮州社保缴费标准基数及比例2022一览表(潮州2022年个人社保缴费标准表)-每日视讯
- 那些加盟连锁咖啡店的人,现在怎么样了?-今日观点
- 大宗交易:长春高新成交207.99万元,折价9.37%(11-11)
- 雅化集团:全资子公司签署锂辉石矿产品承购协议-天天新资讯
- ST大集(000564)龙虎榜数据(11-11)-全球热门
- 青岛胶州“一网统管” 有效破解“停车难”
- 龙津药业(002750)龙虎榜数据(11-11)-全球最资讯
- 天鸿新材拟向浦东发展银行阜阳分行申请专精特新“小巨人”信用贷款 贷款金额总计1000万-全球速讯
- 云浮社保缴费标准基数及比例2022年一览表(2022年个人社保缴费标准表)
- 复盘66只涨停股:天鹅股份10板 众生药业天地板 天下秀炸板回封-天天热文
- 贵阳贵安2023医保怎么缴费?居民医保缴费方式-聚焦
- 金银河(300619.SZ)股东梁可累计减持比例达1.35% 减持数量过半-今日报
- 华峰测控(688200.SH)部分股东及董监高拟合计减持不超1.79万股-环球滚动
- 许家印再卖资产:恒大总部大楼退租一年后,75.43亿转让深圳湾总部地块-环球即时看
- 农民失地保险金如何领取?失地保险金有多少?-环球时讯
- 农民失地保险金怎么领取?有多少钱?
- 多型功勋航天惯导首次亮相中国航展
- 信用卡存款能取出来吗(信用卡存款)
- ST易购:公司苏宁易购广场(百货业态)有美妆、美容相关业态-天天热资讯
- 黑马•产业丨解构聚玻网:数智化重塑玻璃产业链,创立7年营收过百亿-焦点精选
- 天目湖振幅16.43% 机构龙虎榜净卖出4937.51万元
- 光荣之家门牌发放规定河北(光荣之家门牌发放的意义)
- 大港股份今日涨8.21%,上榜营业部席位近3日合计成交12.72亿元-新要闻
- 宁波韵升:参股公司中韵矿业拟收购非洲稀土矿权
- 国网信通:子公司中标3.87亿元国家电网采购项目
- 港股强劲拉升,恒生科技30ETF(513010)大涨5.8%-每日快报
- 深交所:本周对近期涨幅异常的“竞业达”“天地在线”进行重点监控
- 互太纺织(01382)发盈警,预计中期股东应占溢利可能同比下降约28.6%-短讯
- 天鹅股份:公司股价近期波动较大 停牌核查-天天资讯
- 宁波韵升:参股公司以500万美元收购中矿香港稀土100%股份
- 华纳药厂(688799.SH):监事金焰拟减持不超75.9万股
- 好消息!好消息!黄生就市论势本周分享多股止盈,实力杠杠的!-世界资讯
- 科美诊断股东拟合计减持不超9%股份-环球观点
- 龙虎榜丨荣联科技今日涨停 知名游资孙哥净买入4357.57万元-当前快报
- 华密新材“双11”北交所顺利过会:国家级专精特新“小巨人”企业 去年实现净利润4420万元
- 三七互娱拟斥资3亿元至6亿元回购股份 彰显长期信心
- 犀牛午讯:恒大挂牌转让原深圳总部地块 瑞斯康达回应被立案-天天热门
- 天鹅股份:股价异动 停牌核查-当前视点
- 天鹅股份:公司股价近期波动较大 停牌核查-天天速讯
- 华光环能:拟收购汕头益鑫股权并投建澄海益鑫天然气分布式能源项目
- 宁波韵升:参股公司中韵矿业拟收购非洲稀土矿权
- 顺鑫农业:公司部分产品提价
- 时隔5年杭州回归“认房不认贷” 二套首付降至四成-全球今热点
- 11月11日沪深两市主力资金净流入451.23亿元,加仓房地产、医药生物、非银金融-全球速看
- 宏润建设:公司与安徽省新能创业投资有限责任公司投资设立的上海皖宏新能源有限公司已完成工商登记手续
- 若羽臣(003010.SZ):朗姿股份减持比例达1.7887%-世界今日报
- 许家印再卖资产:恒大总部大楼退租一年后,75.43亿转让深圳湾总部地块-热点在线
- 普甜食品(01699):2021年年度业绩将于11月22日刊发 继续停牌
- 信安世纪(688201.SH)筹划增发及现金收购普世科技80%股权事宜 11月14日起停牌
- 外交部:中方出台进一步优化疫情防控工作二十条措施绝不是躺平
- 若羽臣:公司目前未和阿富汗、非洲等地有业务往来
- 微信否认“微信支持撤回5分钟内消息”
- 外交部:美方应该立即停止对中国光伏企业的无理打压-环球热消息
- 南大光电:公司电子特气产品可以应用于chiplet技术工艺-每日讯息
- 良莠不齐怎么读(良莠)
- 协鑫集成:目前芜湖电池项目已经取得项目备案证 确定了项目土地,能评、环评等正在办理中-全球微资讯
- 富士康拟大举扩建印度工厂 未来两年计划新招5.3万名员工
- 中欣氟材:公司主要对京新药业、国邦药业、浙江医药、天宇药业等公司提供医药中间体-环球讯息
- 安记食品(603696.SH):实控人林肖芳以大宗交易减持1.99%的股份-今热点
- 大森控股(01580.HK):财政年度年结日由12月31日变更为3月31日
- 广电运通:公司在Web3.0涉及的区块链、数字货币、NFT等方面拥有技术储备-今亮点
- 北美木制品规模预计在2026年达到24389亿美元-每日精选
- 苏宁家电加盟(苏宁家电)
- 家居卖场“转战”直播做“副业”-当前热门
- 机构:煤电基准价上调,电源均有望获益!电力ETF基金飘红
- 前三季度6家上市定制家居企业净利下滑 大宗业务加持不再?-环球微速讯
- STYLAND HOLD(00211.HK)拟11月25日举行董事会会议 审批中期业绩
- 债转股是否需要验资 债转股对股民是好是坏?
- 天阳科技:北京时间及其一致行动人珠海时间拟清仓减持合计6.94%公司股份
- 医疗保险和商业保险的区别是什么?哪个更好?
- 惠云钛业:上调各型号钛白粉销售价格-天天快讯
- 医保电子凭证亲情账户怎么使用?激活家庭成员流程一览-天天热头条
- 光线传媒控股股东拟减持降低负债,Q3亏损9876万元-环球热点
- 三七互娱:拟斥资3亿元至6亿元回购股份
- 老三板股票在哪里看行情分析 老三板交易费用怎么算?
- 芬兰木材进出口出现大幅缩减-全球动态
- 东方园林:股东何巧女所持4774万股公司股份将被司法拍卖-全球快看
- 75.4亿!原恒大深圳总部地块挂牌,成交款将用于还债-最资讯
- 机构:医药行业有望反转,美诺转债涨超15%!可转债ETF涨近1%-微速讯
- 这届“双11”:主播通宵卖货,但“狂欢”不再-全球信息
- 深圳市抽查家具、人造板等产品34批次不合格
- 合肥社保缴费基数2022是多少?2022年合肥社保一个月要交多少钱?-全球关注
- 场内基金是指什么 场内基金在哪个平台买比较好一点?
- 安井食品(603345.SH):董事长刘鸣鸣、总经理张清苗拟合计减持不超1.6707%股份-环球简讯
- 国网信通(600131.SH)四家子公司共计中标3.87亿元国家电网招标采购项目-实时
- 上海社会保险缴费基数2022下限6520元-环球要闻
- 农民失地保险金有多少?需要哪些资料?-速递
- 热继电器型号(热继电器符号)
- 公积金联名卡有什么用处 没有联名卡怎么提取公积金余额?
- 个人独资企业注册资金最低多少 注册一个空壳公司一年交多少费用合适?
- 优先股是指什么意思 优先股的优缺点是什么?
- 知名英语培训机构全国多个分校突然关门!学员索要学费 老师:我们也是受害者
- 办信用卡哪个银行好批额度高 有什么容易通过的信用卡?
- 收评:三大指数全天放量大涨 两市成交额突破1.2万亿-速读
- 太湖新城污水厂凸显互联互通优势 污水管“长途奔袭”15公里
- Web3.0概念热度不减 天地在线11日斩获9板 公司否认迎合热点概念炒作-世界快消息
- 北向资金净买入146.67亿元,中止连续4日净卖出-今日报
- NTT DATA业务解决方案荣获2022年SAP创新奖
- 新威凌11月11日14时北交所IPO路演: 国内锌粉生产领域龙头企业 打破国外垄断实现进口替代-当前要闻