java多线程

举报
黄生 发表于 2023/02/12 21:30:57 2023/02/12
【摘要】 Java可以用Thread类和synchronized关键字来编写多线程,但很难使用。所以java5在java.util.concurrent包里添加了并发工具。首先是atomic包里面提供了一些类,能够以原子操作来操作这些类的变量。有了并发工具,尽量不再用Thread线程执行Runnable任务,可以用Executor或子接口ExecutorService的一个实现来执行。当然,很少需要自...

Java可以用Thread类synchronized关键字来编写多线程,但很难使用。所以java5在java.util.concurrent包里添加了并发工具。

首先是atomic包里面提供了一些类,能够以原子操作来操作这些类的变量。
有了并发工具,尽量不再用Thread线程执行Runnable任务,可以用Executor子接口ExecutorService的一个实现来执行。

当然,很少需要自己编写实现,一般使用Executors的静态方法即可,比如

public static ExecutorService newFixedThreadPool(int numOfThreads)
public static ScheduledExecutorService newScheduledThreadPool (int corePoolSize)

ExecutorService是Executor的一个扩展,它添加了终止方法、用于执行Callable的方法(类似于Runnable,但可以返回一个值,便于通过Future接口来完成删除的任务)

Runnable任务可以写成Lambda表达式,如果不需要向任务传递参数,任务也短,将其构造成匿名类是合适的;否则新建类来实现Runnable接口比较合适。

待续

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。