[@徐雷frank][¥20]作为java开发者应该处理多线程?怎么样编码好多线程程序?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

[@徐雷frank][¥20]作为java开发者应该处理多线程?怎么样编码好多线程程序?

2018-12-01 16:44:26 1834 1

为了充分利用cpu加快运算,这时候我们就会用到多线程,但是用到多线程时就会面对一个共享变量的问题。为了共享变量的同步我们对线程 代码加锁。但是加锁过程中又会让其他线程进行等待这样就会耗时很大。 那请问,我们应该怎么对待共享变量,使得多线程程序运行结果正确而不会像加锁那样造成等待的耗时?原子操作还是?原子操作内部实现是一个期望值和当前值比较?如果一直比较失败呢?那作为java开发者应该处理多线程?怎么样编码好多线程程序?

问题来自Java技术沙龙的舒超群
Java线下沙龙报名链接:https://yq.aliyun.com/activity/796

取消 提交回答
全部回答(1)
  • 徐雷frank
    2019-07-17 23:17:55

    问题很好。Java的多线程编程是很重要的知识点。
    Java程序员可以看看《Java并发编程的艺术》相关的书籍,目前对于大部分Java程序员来说,做好多线程编程,最好是依赖底层的框架。相对来说出问题的概率比较低,而且容易实现。如果非常熟练,可以参考编写一些多线程的代码。
    Java多线程目前封装比较好的框架是JUC库。可以直接使用。
    多线程,如果数据都是隔离,每个线程单独所有,不会出现线程安全问题,相对简单。
    但是如果涉及到共享问题,就比较麻烦。涉及线程安全必然有锁的问题,Lock和Synchronized关键字的使用。
    共享资源加锁,一般说为悲观锁,必然会导致其他线程等待,尽快处理,及时释放是最好的策略。
    如果是乐观锁,并发问题相对处理简单,但是无法保证数据一致性。
    Lock接口允许自己实现共享资源的锁定和释放,效率高,编码工作量大。
    Synchronized相对简单,关键字,但是性能不如Lock.
    你提到的CAS也是CPU低等的指令。效率比较高。
    如果可以尽量使用现有的Java多线程框架,可以降低底层的编码实现难度,线程调度和锁机制太复杂。
    积累一定经验,或者项目实在需要,标准框架无法满足的时候,可以尝试优化,或者自己实现多线程代码。

    0 0
相关问答

3

回答

请教java多线程问题

2016-06-14 14:59:07 2059浏览量 回答数 3

1

回答

求助个Java多线程的问题

2016-05-31 08:52:03 1976浏览量 回答数 1

1

回答

一个java多线程的问题

2016-03-19 17:24:32 2027浏览量 回答数 1

2

回答

关于Java多线程遇到的问题.

2016-03-11 18:46:14 1810浏览量 回答数 2

2

回答

关于Java多线程的问题

2016-02-20 16:21:51 1738浏览量 回答数 2

1

回答

java性能问题:有没有比较字符串是否相等的最快方法?

2021-11-06 16:21:40 170浏览量 回答数 1

0

回答

您好java性能问题:有没有比较字符串是否相等的最快方法?

2021-11-07 00:39:14 146浏览量 回答数 0

1

回答

java性能问题:如何优化向HashMap插入元素的速度?

2021-11-06 15:41:34 216浏览量 回答数 1

0

回答

请问java性能问题:如何优化向HashMap插入元素的速度?

2021-11-12 17:18:18 138浏览量 回答数 0

0

回答

请问java中常用的性能调优诊断工具都有哪些,请帮忙提供一下?

2021-11-06 22:35:44 89浏览量 回答数 0
+关注
管理贝贝
静静的看着你们
60
文章
602
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载