prince的文章

10、Java并发编程:线程安全和不变性

只有当多个线程访问同一资源,并且一个或多个线程写入该资源时,才会出现竞态条件。如果多个线程读取同一资源,则不会出现竞态条件。 我们可以使共享对象不可变,以此来确保线程之间共享的对象不会被任何线程更新,从而保证线程安全。下面是一个例子: pu...

09、Java并发编程:线程安全和共享资源(局部变量,局部对象引用,对象成员变量,线程控制逸出规则)

可以由多个线程同时安全调用的代码称为线程安全代码。线程安全的代码不包含竞态条件。只有当多个线程更新共享资源时,才会出现竞态条件。因此,了解Java线程在执行时共享了哪些资源非常重要。 局部变量 局部变量存储在线程自己的堆栈中。这意味着局部变...

08、Java并发编程:竞态条件和临界区

竞态条件是可能发生在临界区内的特殊条件。临界区是由多个线程执行的一段代码,它的并发执行结果会因线程的执行顺序而有差别。 多个线程执行一个临界区,可能因线程执行的顺序不同而带来不同的结果,在这种情况下,该临界区称为含有竞态条件。术语竞态条件源...

06、Java并发编程:并发和并行

并发和并行这两个术语通常用于多线程程序。但并发和并行到底是什么意思,这两个术语又有什么不同呢? 我花了一些时间才最终理解并发和并行之间的区别。因此,我打算在本Java并发教程中添加一篇关于并发与并行的文章。 并发 并行 要实现真正的并行,应...

05、Java并发编程:类单线程(单线程扩展,无共享状态,负载分配,线程通信)

类单线程是这样一种并发模型,它把一个单线程系统扩展到N个单线程系统,结果是N个单线程系统并行运行。 类单线程系统不是纯粹的单线程系统,因为它包含多个线程。但是,每个线程都像单线程系统一样运行。因此称之为类单线程而不是单线程。 为什么要用单线...

04、Java并发编程:并发模型(共享状态,分离状态,并行工作机模型,流水线模型,反应/事件驱动系统,函数式并行)

并发系统可以由不同的并发模型来实现。并发模型规定了系统中线程的协作方式,从而能够共同完成指定任务。不同的并发模型会将任务按不同的方式分割,而线程之间也通过不同的方式来通信和协作。本并发教程将更深入一点的讨论时下(2015 - 2019)使用...

03、Java并发编程:多线程的代价(程序设计,上下文切换,资源消耗)

把程序从单线程转变到多线程并非仅仅带来好处,也需付出代价。我们不应该一味的让程序支持多线程,而只应在权衡了利大于弊的情况使用多线程。当我们不能确定时,可以先试着衡量下程序的性能和响应性,而不是凭空猜想。 多线程的设计更复杂 虽然多线程程序的...