JDK 原罪...

2017-02-23 16:56:14 +08:00
 skywayman

多线程开发是 Java 语言中经常用到的(别说你不用)....

当我们谈论多线程的时候总有一个讨论点 : 线程安全. 当我们谈论线程安全的时候我们在谈什么? 什么原子性\可见性\顺序性\锁\同步\CAS\xx 原则\volatile 语法\jdk 的新库\vector 与 arraylist 哪个安全\面试考题等等等等....

SO...

妈蛋,能不能先把 JDK 中成百上千个类中,哪些不是线程安全的给苦逼的程序员标注出来先? 原罪啊... 老司机都表示不淡定了...

6141 次点击
所在节点    程序员
48 条回复
enenaaa
2017-02-23 17:11:30 +08:00
把你不确认的都当成非线程安全
skywayman
2017-02-23 17:16:48 +08:00
@enenaaa 新一茬韭菜得接着采坑不是....
linbiaye
2017-02-23 17:17:19 +08:00
线程安全的不都给你放 java.util.concurrent 下面了么。
skywayman
2017-02-23 17:35:59 +08:00
@linbiaye 话是没有错,但你要用 SimpleDateFormat,用 StringBuilder 嘛...
kappa
2017-02-23 18:02:37 +08:00
@skywayman RTFM

Synchronization

Date formats are not synchronized. It is recommended to create separate format instances for each thread. If multiple threads access a format concurrently, it must be synchronized externally.

或者继续当韭菜,也方便筛人
mokeyjay
2017-02-23 18:28:37 +08:00
问:程序猿为何要使用多线程?
答:因为他们觉得生活还不够乱
xuyankang
2017-02-23 18:31:36 +08:00
线程不安全的类也能线程安全,线程安全的类也能线程不安全。。。
hepin1989
2017-02-23 19:54:44 +08:00
能力问题
kaneg
2017-02-23 19:58:39 +08:00
Java 的多线程设计是相当优雅的,觉得不安全就加 synchronized ,没有那么可怕。
ihuotui
2017-02-23 21:08:57 +08:00
因为场景太多,只是你见识少,例如在多线程下同一个 id 的操作线程要求顺序,使用 lock 的公平锁。
ovear
2017-02-23 21:11:16 +08:00
那啥。。要怕的话可以直接加一个 synchronize
出了效率问题,或者有时间再弄。。
Sight4
2017-02-23 21:29:15 +08:00
线程安全这个问题不是 Java 独有的吧....
tianice
2017-02-23 21:56:12 +08:00
jdk 有很多问题,基本都是要兼容旧版本导致的,早就该改改了
hjc4869
2017-02-23 21:58:14 +08:00
原则上文档 /标准中没有说线程安全就代表实现时没必要保证线程安全,也就是你不能当线程安全的用。
gouchaoer
2017-02-23 22:11:41 +08:00
java 的多线程做的很好了,你居然还不满足
gam2046
2017-02-23 22:18:04 +08:00
Windows 原罪.....

装软件是 Windows 中经常用到的(别说你不用)....


当我们谈论装软件的时候总有一个讨论点 : 有没有病毒. 当我们谈论病毒的时候我们在谈什么? 什么 360\杀毒软件\主动防御\HIPS\安全管家\安全助手等等等等....

SO...

妈蛋,能不能先把 Windows 中成千上万的软件中,哪些没有病毒的给苦逼的用户标注出来先? 原罪啊... 老司机都表示不淡定了...
icebergSnow
2017-02-23 22:26:11 +08:00
不太懂你,病毒又不是微软产的
skywayman
2017-02-23 23:37:35 +08:00
@gam2046 亏你打这么多,本质没理解. JDK 是原生的,直接给开发人员使用的,病毒是 windows 中原生的嘛? 明明是第三方编写并传播的,要反思的是 windows 的内部机理吧...
@gouchaoer 不是不满足,只是不明白既然引入了多线程,为什么不把基础类库做的更好一点,比如编译的时候能识别某基础类库在多线程环境下会有问题,出现个警告之类的....而不用人去"趟坑",然后把结果和过程称之为"开发经验"或"血泪教训";
@hjc4869 基础类库是不是太多了点,我反正没有全部看完
@tianice 知音
@Sight4 我并不是抱怨线程安全问题
@hepin1989 我水平一般
@xuyankang 这是实话
@kappa 其实只是不明白既然引入了多线程,为什么不把基础类库做的更好一点,比如编译的时候能识别某类库在多线程环境下会有问题,出现个警告之类的....而不用人去"趟坑",然后把结果和过程称之为"开发经验"或"血泪教训";
skywayman
2017-02-23 23:39:26 +08:00
@ihuotui 只能说还完全没懂我意思
Allianzcortex
2017-02-23 23:52:57 +08:00
joda-time 和 stringbuffer

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/342674

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX