全球观热点:java线程的创建和管理(二)
四、线程同步与互斥
Java 中的线程同步和互斥机制可以防止多个线程同时访问共享资源导致数据不一致的问题。Java 中的线程同步和互斥机制有多种实现方式,包括 synchronized 关键字、Lock 接口、Semaphore 类、Condition 接口等。
synchronized 关键字
synchronized 关键字可以保证同步访问共享资源,其用法有两种:
(资料图片仅供参考)
在方法前加上 synchronized 关键字,保证同一时刻只有一个线程能够执行该方法。
public synchronized void method() { // 同步代码块}
修饰代码块在代码块前加上 synchronized 关键字,保证同一时刻只有一个线程能够执行该代码块。
public void method() { synchronized (this) { // 同步代码块 }}
Lock 接口
Lock 接口提供了比 synchronized 更为灵活的锁机制。Lock 接口有多个实现类,其中最常用的是 ReentrantLock 类。ReentrantLock 类实现了 Lock 接口,使用方式如下:
import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class MyRunnable implements Runnable { private Lock lock = new ReentrantLock(); // 创建可重入锁 @Override public void run() { lock.lock(); // 获取锁 try { // 同步代码块 } finally { lock.unlock(); // 释放锁 } }}
在该例子中,我们使用 ReentrantLock 类创建了一个可重入锁,并在 run() 方法中使用了 lock() 方法获取锁,使用了 unlock() 方法释放锁。
Semaphore 类
Semaphore 类可以控制并发线程的数量,其用法如下:
import java.util.concurrent.Semaphore;public class MyRunnable implements Runnable { private Semaphore semaphore = new Semaphore(2); // 创建 Semaphore 对象,限制线程数量为 2 @Override public void run() { try { semaphore.acquire(); // 获取许可证 // 同步代码块 } catch (InterruptedException e) { e.printStackTrace(); } finally { semaphore.release(); // 释放许可证 } }}
在该例子中,我们创建了一个 Semaphore 对象,限制线程数量为 2,然后在 run() 方法中使用了 acquire() 方法获取许可证,使用了 release() 方法释放许可证。
Condition 接口
Condition 接口可以实现线程之间的通信,其用法如下:
import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class MyRunnable implements Runnable { private Lock lock = new ReentrantLock(); private Condition condition = lock.newCondition(); // 创建条件变量 @Override public void run() { lock.lock(); try { while (true) { condition.await(); // 等待信号 // 处理信号 } } catch (InterruptedException e) { e.printStackTrace(); } finally { lock.unlock(); } } public void signal() { lock.lock(); try { condition.signal(); // 发送信号 } finally { lock.unlock(); } }}
在该例子中,我们使用 Lock 和 Condition 接口实现了线程之间的通信。在 run() 方法中,我们使用了 await() 方法等待信号,使用了 signal() 方法发送信号。
五、线程池
线程池是一种重用线程的机制,可以避免线程的频繁创建和销毁,提高了线程的利用率。Java 中的线程池是通过 Executor 框架实现的,包括 Executor、ExecutorService 和 ThreadPoolExecutor 三个类。
Executor
Executor 是一个接口,只定义了一个 execute(Runnable command) 方法,用于执行 Runnable 对象。
import java.util.concurrent.Executor;public class MyRunnable implements Runnable { @Override public void run() { // 线程执行的代码 }}public class Test { public static void main(String[] args) { Executor executor = Executors.newSingleThreadExecutor(); // 创建 Executor 对象 executor.execute(new MyRunnable()); // 执行线程 }}
在该例子中,我们使用 Executors 工厂类创建了一个单线程的 Executor 对象,然后使用 execute() 方法执行了一个 MyRunnable 对象。
ExecutorService
ExecutorService 接口继承自 Executor 接口,提供了更多的方法,如提交任务、关闭线程池等。
import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class MyRunnable implements Runnable { @Override public void run() { // 线程执行的代码 }}public class Test { public static void main(String[] args) { ExecutorService executorService = Executors.newFixedThreadPool(2); // 创建 ExecutorService 对象 executorService.execute(new MyRunnable()); // 执行线程 executorService.shutdown(); // 关闭线程池 }}
在该例子中,我们使用 Executors 工厂类创建了一个固定大小为 2 的线程池,然后使用 execute() 方法执行了一个 MyRunnable 对象,最后使用 shutdown() 方法关闭了线程池。
ThreadPoolExecutor
ThreadPoolExecutor 类是 ExecutorService 接口的默认实现,提供了更为灵活的线程池管理。
import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;public class MyRunnable implements Runnable { @Override public void run() { // 线程执行的代码 }}public class Test { public static void main(String[] args) { ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(2, 4, 60, TimeUnit.SECONDS, new LinkedBlockingQueue()); // 创建 ThreadPoolExecutor 对象 threadPoolExecutor.execute(new MyRunnable()); // 执行线程 threadPoolExecutor.shutdown(); // 关闭线程池 }}
在该例子中,我们使用 ThreadPoolExecutor 类创建了一个大小为 2-4 的线程池,使用 execute() 方法执行了一个 MyRunnable 对象,最后使用 shutdown() 方法关闭了线程池。
标签:

全球观热点:java线程的创建和管理(二)
2023-04-04

即时焦点:第20届东博会新加坡巡展暨“桂品出海”今日开幕 近80家广西企业组团出海
2023-04-04

天天热门:开源证券给予新泉股份买入评级
2023-04-04

环球热点评!美国前总统特朗普已抵达纽约曼哈顿
2023-04-04

天天新消息丨混凝土c25配合比例是多少_混凝土c25配合比
2023-04-04

今日热议:我的初三生活作文800字_我的初三
2023-04-03

天天最新:永和股份2022年净利3亿同比增长8.03% 董事长童建国薪酬61.53万
2023-04-03

世界微头条丨【行情走势,操作建议】张彦溱:4.3今日黄金行情走势分析,欧盘修正,美盘跌,高空不变
2023-04-03

世界信息:打造创新生态,临港3年引进、落户人才437万人
2023-04-03

每日速递:关于幸福的文章题目_关于幸福的文章
2023-04-03
即时焦点:第20届东博会新加坡巡展暨“桂品出海”今日开幕 近80家广西企业组团出海
天天热门:开源证券给予新泉股份买入评级
环球热点评!美国前总统特朗普已抵达纽约曼哈顿
天天新消息丨混凝土c25配合比例是多少_混凝土c25配合比
今日热议:我的初三生活作文800字_我的初三
天天最新:永和股份2022年净利3亿同比增长8.03% 董事长童建国薪酬61.53万
世界微头条丨【行情走势,操作建议】张彦溱:4.3今日黄金行情走势分析,欧盘修正,美盘跌,高空不变
世界信息:打造创新生态,临港3年引进、落户人才437万人
每日速递:关于幸福的文章题目_关于幸福的文章
环球观热点:河南商丘启动重大气象灾害(大风)Ⅳ级应急响应
最新资讯:211分数线:高考上211大概需要多少分
当前要闻:上海临港:到2025年前沿产业规上工业产值预计达到5000亿元
头条焦点:澄字怎么读的 澄字怎么读
【焦点热闻】越长大金牛座对于一个人的要求就变得越高 再去寻找喜欢的人的时候就很难
世界播报:华兴资本首席经济学家李宗光:2023年的A股 像极了2013年
焦点速递!中泰证券:给予中国中免买入评级
世界快播:logstash增量同步MySQL关于sql_last_value取值失败的问题
当前滚动:双色球第23036期晒票欣赏,人生的方向不对,正确看待彩票
全球热头条丨佛塑科技:公司将在2023年4月30日之前发布公司2023年一季度报告
每日视点!巩义市气象局发布大风蓝色预警【IV级/一般】
世界微资讯!泾源县气象台发布道路结冰黄色预警【III级/较重】
速读:预付费商家频“跑路”,消费者须短期少存看清合同
【全球新要闻】聚餐引发伤亡 劝酒陋习咋破
焦点滚动:定制公交蓟3路正式开通运营 带您领略蓟州之美
环球看点!广州灵活就业社保缴费价格表2023 2023广州灵活就业社保一个月要交多少?
世界新消息丨河池2023年3月16日星期四小雨转阴最高气温24度
每日时讯!首届丰台国潮艺术节今天举办第一场全园群众活动
世界实时:今天最新消息 台湾一男子偷拍瑜伽课女教师 被判拘50天
当前时讯:西兰花做法大全菜谱_西兰花做法


- 今日要闻!微星魔影15性能实测:性能强悍的高颜值游戏本新贵!
- 天天热头条丨厚衣服先别急着收起!清明节还有冷空气要来
- 环球今亮点!“狙击”肿瘤精准至0.1毫米,广东第三套机器人智慧放射治疗系统启用
- 环球视点!真实模拟职场环境,上海首个大学生求职能力实训营正式开营
- 世界观察:美女COS斗破苍穹美杜莎,还原本尊,网友:超像动漫版美杜莎
- 快资讯:专访:美国假民主之名分裂世界——访美国中美研究中心高级研究员苏拉布·古普塔
- 今头条!新学期新希望黑板报内容文字小学_新学期新希望黑板报内容
- 世界今日讯!杉数科技获近5亿人民币C2+轮融资 越秀产业基金、国开制造业基金领投
- 全球今日报丨化学洞察研究所发布可操作的科学工具
- 世界头条:一线城市二线城市三线城市划分表2023_2019一线城市二线城市三线城市
- 每日热议!保利发展2022年报:穿越行业周期波动企稳高质量发展之路
- 每日聚焦:混凝土泵车型号规格最高能送多少米_混凝土泵车型号规格
- 焦点观察:海南代表队荣获“国赛”一金三银五铜
- 天天快资讯:房屋拆迁人提起诉讼的期限是多久?房屋拆迁纠纷案件怎么处理?
- 天天即时:孙艺珍晒照庆祝结婚一周年 网友:嫁给了幸福的样子
- 天天热点评!羊水穿刺风险是什么?羊水的医学定义都是什么?
- 即时看!高级语言程序要被机器执行只有用解释器来解释执行对吗_高级语言程序要被机器执行只有用解释器来解释执行
- 每日聚焦:空开1p和2p的区别
- 世界速递!三天两检忘记了怎么补救?
- 环球聚焦:新冠病毒防治板块3月30日跌0.6%,三维天地领跌,主力资金净流出22.38亿元
- 焦点快播:魅族20系列发布:搭载天问S1芯片,售价2999至8499元
- 环球热头条丨《漂亮的战斗》阵容公开 管乐孟子义王濛杨超越张雨绮组漂亮团
- 世界时讯:致敬!79年后,19位无名烈士“归队”
- 环球最新:“东北面包大王”去年营收67亿元,净赚6个亿
- 每日观察!以茶富民 在创新中激活映秀镇文旅国际范
- 每日观点:中国银行间市场交易商协会发布自律处分信息,对上海电气予以严重警告
- 【热闻】除了用水纠纷,孙国友的林场还有这么一回事,贴一个旧闻
- 观热点:信用卡逾期六个月可以协商分期吗?信用卡逾期6天会有不良记录吗?
- 焦点观察:读者传媒(603999)3月30日主力资金净卖出315.04万元
- 世界实时:母亲节适合送什么礼物,分享几款很实用的
- 环球热门:和讯个股快报:2023年03月30日 神宇股份(300563)该股换手率大于8%
- 即时看!和讯个股快报:2023年03月30日 中信建投(601066)13:59分,股价快速拉升
- 世界聚焦:博人传:木叶情报系统衰弱成渣,多年未发现壳组织,都是鸣人的锅
- 环球百事通!水稻秸秆成为赚钱“香饽饽” 农民再添增收新途径
- 当前快播:今年前两个月我国物流需求恢复加快
- 当前快看:江西抚州:结绳技艺 惊艳来袭
- 世界热头条丨为什么刘备驾崩后,诸葛亮就几乎难打胜仗?姜维弥留之际道明原因
- 天天微头条丨妹妹结婚哥哥送什么礼物,参考这份特别的礼品清单
- 快资讯丨推动地方特色食品产业迈向高端
- 【时快讯】盘点娱乐圈中几位水性杨花的女明星,有一位号称是“男人收割机”
- 世界看热讯:深交所开展专项行动深化阳光审核阳光监管阳光服务
- 【世界热闻】厚朴温中汤
- 天天速读:电池级碳酸锂价格腰斩 电动车会降价吗?专家给出结论
- 天天观速讯丨看白鹤归来 “熊猫鸟”捕食尽显霸
- 当前头条:清明时节春渐暖 “艾”产业有效拉动江西信丰经济发展
- 焦点讯息:醉酒男子路边酣睡 热心民警暖心守护
- 当前观点:争议一幕!最后47秒落后7分王哲林主动请战却被拒 抱怨:还有时间
- 全球微头条丨环境污染有哪些危害_环境污染有哪些
- 【独家】国乒“直通德班”世乒赛选拔赛:多位选手全胜晋级半决赛
- 当前简讯:瑞泰科技(002066)3月29日主力资金净卖出128.47万元