📝 Java并发教程
35篇技术文档📅  最后修改于: 2020-11-15 03:49:18        🧑  作者: Mango
Java是一种多线程编程语言,这意味着我们可以使用Java开发多线程程序。多线程程序包含两个或多个可以同时运行的部分,并且每个部分可以同时处理不同的任务,从而可以最佳地利用可用资源,尤其是在计算机具有多个CPU的情况下。多线程使您可以编写一种方式,使多个活动可以在同一程序中同时进行。Java是最初由Sun Microsystems开发并于1995年发布的一种高级编程语言。Java在各种平台上运行,...
📅  最后修改于: 2020-11-15 03:49:55        🧑  作者: Mango
Java是一种多线程编程语言,这意味着我们可以使用Java开发多线程程序。多线程程序包含两个或多个可以同时运行的部分,并且每个部分可以同时处理不同的任务,从而可以最佳地利用可用资源,尤其是在计算机具有多个CPU的情况下。根据定义,多任务是指多个进程共享诸如CPU之类的通用处理资源。多线程将多任务的概念扩展到应用程序中,您可以在其中将单个应用程序内的特定操作细分为各个线程。每个线程可以并行运行。 O...
📅  最后修改于: 2020-11-15 03:50:21        🧑  作者: Mango
在本章中,我们将讨论为Java设置合适的环境的不同方面。本地环境设置如果您仍然愿意为Java编程语言设置环境,那么本节将指导您如何在计算机上下载和设置Java。以下是设置环境的步骤。可从下载Java链接免费获得Java SE。您可以下载基于操作系统的版本。按照说明下载Java并运行.exe在计算机上安装Java。在机器上安装Java之后,您将需要设置环境变量以指向正确的安装目录-设置Windows...
📅  最后修改于: 2020-11-15 03:50:41        🧑  作者: Mango
核心Java提供了对多线程程序的完全控制。您可以开发一个多线程程序,该程序可以根据您的要求完全挂起,恢复或停止。您可以在线程对象上使用多种静态方法来控制其行为。下表列出了这些方法-Sr.No.Method & Description1public void suspend()This method puts a thread in the suspended state and can be re...
📅  最后修改于: 2020-11-15 03:50:59        🧑  作者: Mango
如果您知道进程间通信,那么您将很容易理解线程间通信。当您开发两个或多个线程交换某些信息的应用程序时,线程间通信非常重要。有三种简单的方法和一些使线程通信成为可能的小技巧。这三种方法都在下面列出-Sr.No.Method & Description1public void wait()Causes the current thread to wait until another thread inv...
📅  最后修改于: 2020-11-15 03:51:17        🧑  作者: Mango
带有同步的多线程示例这是相同的示例,它按顺序打印计数器值,并且每次运行它时,它都会产生相同的结果。例现场演示每次您运行该程序时,都会产生相同的结果-输出...
📅  最后修改于: 2020-11-15 03:51:42        🧑  作者: Mango
死锁描述了一种情况,其中两个或多个线程永远被阻塞,互相等待。当多个线程需要相同的锁但以不同的顺序获得它们时,就会发生死锁。 Java多线程程序可能会遇到死锁情况,因为synced关键字会导致正在执行的线程在等待与指定对象关联的锁或监视器时阻塞。这是一个例子。例现场演示编译并执行上述程序时,发现死锁情况,以下是该程序产生的输出:输出上面的程序将永远挂起,因为这两个线程都没有继续进行并等待彼此释放锁的...
📅  最后修改于: 2020-11-15 03:52:00        🧑  作者: Mango
ThreadLocal类用于创建只能由同一线程读取和写入的线程局部变量。例如,如果两个线程正在访问引用了相同threadLocal变量的代码,则每个线程将看不到其他线程对threadLocal变量所做的任何修改。ThreadLocal方法以下是ThreadLocal类中可用的重要方法的列表。Sr.No.Method & Description1public T get()Returns the v...
📅  最后修改于: 2020-11-15 03:52:19        🧑  作者: Mango
java.util.concurrent.ThreadLocalRandom是从jdk 1.7开始引入的实用程序类,在需要多个线程或ForkJoinTasks生成随机数时很有用。与Math.random()方法相比,它可以提高性能并且减少争用。ThreadLocalRandom方法以下是ThreadLocalRandom类中可用的重要方法的列表。Sr.No.Method & Description...
📅  最后修改于: 2020-11-15 03:52:46        🧑  作者: Mango
java.util.concurrent.locks.Lock接口用作类似于同步块的线程同步机制。新的锁定机制比同步块更灵活,并提供更多选项。锁和同步块之间的主要区别如下-顺序保证-同步块不提供对等待线程进行访问的顺序保证。锁接口处理它。无超时-如果未授予锁定,则同步块没有超时选项。锁定界面提供了这种选择。单个方法-同步块必须完全包含在一个方法中,而锁接口的方法lock()和unlock()可以在...
📅  最后修改于: 2020-11-15 03:53:07        🧑  作者: Mango
一个java.util.concurrent.locks.ReadWriteLock接口允许一次读取多个线程,但一次只能写入一个线程。读锁-如果没有线程锁定了ReadWriteLock进行写入,则多个线程可以访问读锁。写锁-如果没有线程正在读或写,则一个线程可以访问写锁。锁方法以下是Lock类中可用的重要方法的列表。Sr.No.Method & Description1public Lock re...
📅  最后修改于: 2020-11-15 03:53:30        🧑  作者: Mango
java.util.concurrent.locks.Condition接口提供线程功能来暂停其执行,直到给定条件为真为止。 Condition对象必须绑定到Lock,并且可以使用newCondition()方法获得。条件方法以下是Condition类中可用的重要方法的列表。Sr.No.Method & Description1public void await()Causes the curre...
📅  最后修改于: 2020-11-15 03:53:55        🧑  作者: Mango
java.util.concurrent.atomic.AtomicInteger类提供了对基础int值的操作,这些值可以原子方式进行读写,并且还包含高级原子操作。 AtomicInteger支持对基本int变量的原子操作。它具有get和set方法,它们的工作方式类似于对易失性变量的读写。也就是说,一个集合与该变量的任何后续get都具有事前发生的关系。原子compareAndSet方法还具有这些内...
📅  最后修改于: 2020-11-15 03:54:17        🧑  作者: Mango
java.util.concurrent.atomic.AtomicLong类提供了对基础长值的操作,这些值可以原子方式读写,并且还包含高级原子操作。 AtomicLong支持对基本long变量的原子操作。它具有get和set方法,它们的工作方式类似于对易失性变量的读写。也就是说,一个集合与该变量的任何后续get都具有事前发生的关系。原子compareAndSet方法还具有这些内存一致性功能。原子...
📅  最后修改于: 2020-11-15 03:54:37        🧑  作者: Mango
java.util.concurrent.atomic.AtomicBoolean类提供了对基础布尔值的操作,这些值可以原子方式读写,并且还包含高级原子操作。 AtomicBoolean支持对基础布尔变量的原子操作。它具有get和set方法,它们的工作方式类似于对易失性变量的读写。也就是说,一个集合与该变量的任何后续get都具有事前发生的关系。原子compareAndSet方法还具有这些内存一致性...