- 论坛徽章:
- 39
|
1:在你工作中是否有并发编程经历?简述一下。
以前自己写了一个简单多线程的网络爬虫,一个管理线程,几个工作线程.管理线程主要用来监听是否有退出事件,工作线程是否挂掉.工作线程就只管爬数据,读写数据库.再这个案例里,主要是控制好数据库的同步.java层的数据同步都是直接使用"synchronized"关键词解决.
2:你对并发编程是如何理解的?简述你所知道的并发编程的实现方式.
并发就是利用多核cpu的特性,让多核cpu都能同时工作.单不是线程数越多越好,工作线程数最好等于cpu核心数.多了反而会因为cpu上下文切换的时间消耗过大,降低多核的优势.
我知道的实现有状态机,actor.听过,都不熟悉.
3:并发编程对语言层次提出了什么样的要求?比如对内存模型设计有什么要求,对语言架构设计有什么要求.
主要是要解决数据同步问题.再内存模型里有一个立即数的概率.然后解决同步多是用锁来解决.
4:如果让你设计并发编程的一个实现方式,简述一下你的思路。
能力不够啊,还是用好现有的再说吧...
5:如果让你想象,并发编程的下一代编程方式会是什么样子呢?
好像jvm上最新的一个概念是actor,不知道是不scala提出的,看很多讲actor的时候都会设计到scala.
现在很多多线程设计都设计到锁的机制,用起来也越来越简单,但是线程互锁,很多是罗辑层面导致的,
下一代我觉得线程互锁应该会更容易的避免吧 |
|