"并发编程50道面试题及答案" 并发编程是指在一个程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务。并发编程的优点是可以充分利用多核CPU的计算能力,方便进行业务拆分,提升应用性能。但是, 并发编程也存在一些缺点,如内存泄漏、上下文切换、线程安全、死锁等问题。 并发编程的三个必要因素是原子性、可见性和有序性。原子性指的是一个或多个操作要么全部执行成功要么全部执行失败。可见性指的是一个线程对共享变量的修改,另一个线程能够立刻看到。有序性指的是程序执行的顺序按照代码的先后顺序执行。 在Java程序中,可以使用synchronized、volatile、LOCK等方法来保证多线程的运行安全。 并发编程的目的就是为了能提高程序的执行效率,提高程序运行速度。但是,并发编程并不总是能提高程序运行速度的,可能会遇到很多问题。 并发和并行的区别是,并发是多个任务在同一个CPU核上,按细分的时间片轮流执行,从逻辑上来看那些任务是同时执行。并行是单位时间内,多个处理器或多核处理器同时处理多个任务,是真正意义上的“同时进行”。 多线程的优点是可以提高CPU的利用率。在多线程程序中,一个线程必须等待的时候,CPU可以运行其它的线程而不是等待,这样就大大提高了程序的效率。但是,多线程也存在一些劣势,如线程占用内存,多线程需要协调和管理,线程之间对共享资源的访问会相互影响。 线程和进程的区别是,进程是一个在内存中运行的应用程序,每个正在系统上运行的程序都是一个进程。线程是进程中的一个执行任务(控制单元),它负责在程序里独立执行。一个进程至少有一个线程,一个进程可以运行多个线程,多个线程可共享数据。 上下文切换是多线程编程中一般线程的个数都大于CPU核心的个数,而一个CPU核心在任意时刻只能被一个线程使用,为了让这些线程都能得到有效执行,CPU采取的策略是为每个线程分配时间片并轮转的形式。当一个线程的时间片用完的时候就会重新处于就绪状态让给其他线程使用,这个过程就属于一次上下文切换。
剩余29页未读,继续阅读
- 粉丝: 30
- 资源: 1844
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助