关键区别-睡觉和等待Java
睡觉和等待是两种方法多线程在Java中。睡眠方法属于线程类中的wait方法对象类。的关键的区别在Java中睡眠和等待之间的区别是sleep用于将当前线程的执行暂停指定毫秒数,而wait方法用于使当前线程等待,直到另一个线程调用对象的notify或notifyAll方法。
线程是操作系统中最小的处理单元。它是程序中单个连续的控制流。线程是轻量级的。多线程是同时运行多个线程的机制。Java等编程语言支持多线程。多线程的优点在于它允许同时运行多个线程,并且线程之间是相互独立的。Java中有一些方法可以用于多线程。其中两个在睡觉和等待。
内容
1.概述和主要区别
2.在爪哇什么是睡眠
3.什么是Java中的等待
4.Java中睡眠和等待的相似之处
5.并排比较-在Java中的表格形式的睡眠和等待
6.总结
在爪哇什么是睡眠?
一个操作系统中有多个进程在运行。进程是一个正在执行的程序。每个进程可以有多个线程,并且在这些线程之间会发生上下文切换。在Java中,有两种创建线程的方法。这是通过扩展线程类或实现Runnable接口.Thread类具有用于创建和执行线程操作的构造函数和方法。Thread类扩展了Object类,实现了可运行接口。Runnable接口应该由任何类实现,其实例将由线程执行。当线程执行时,应该执行的代码在run方法中编写。应该运行的线程由线程调度程序选择。单个进程中只运行一个线程。
一个线程要经过几个阶段。在创建Thread类的对象之后,程序员可以调用start方法。在调用该方法之前,线程被称为处于新状态。线程调度程序选择要运行的线程。如果线程调度程序尚未选择该线程,但调用了start方法,则该线程处于可运行状态。在线程调度程序选择要执行的线程后,它将过渡到运行状态。如果线程是活动的,但当前没有资格运行,则它处于不可运行或阻塞状态。run方法完成后,线程进入终止状态。这些是线程生命周期的主要阶段。
线程类中有各种方法可用于执行不同的任务。睡眠方法用于使该方法休眠特定的时间。sleep方法的语法是public void sleep(长毫秒)抛出InterruptedException。它使当前正在执行的线程在指定的毫秒数内临时停止执行。如果另一个线程中断了当前线程,则在抛出此异常时清除当前线程的中断状态。
根据上面的程序,run方法包含应该执行的代码。在主程序中,创建了ExampleThread1的两个对象,并在它们上调用启动方法。这将允许在run方法中运行代码。一次只执行一个线程。线程。睡眠(1000);将允许第一个线程在1000毫秒内终止执行。当一个线程处于睡眠状态时,线程调度程序将拾取另一个线程。
什么是Java中的等待?
多个线程可能访问一个共享资源。它可能导致生成错误的输出。线程同步可用于只让一个线程访问共享资源。假设如下情况。如果有两个线程t1和t2, t1开始将值保存到一个名为Text1.txt的文本文件中。当t1返回时,这些值将用于其他计算。如果t2在t1返回之前开始,t2可以更改t1保存的值。这可能导致t1提供错误的输出。在同步的帮助下,当t1开始使用Text1.txt文件时,该文件可以被锁定,因此只有t1可以访问它。t2不能更改它,直到t1释放锁以访问该文本文件。 When the task is completed the t1 can release the lock. The lock is also known as the monitor.
线程同步可以通过线程间通信实现。临界段是访问共享资源的代码段。在线程间通信中,一个线程在其临界区运行时被暂停,允许另一个线程进入该临界区执行。它是使用wait、notify和notifyAll方法实现的。它们属于Object类。wait方法用于允许当前线程释放锁并等待,直到另一个线程调用对象的notify或notifyAll方法。notify方法用于唤醒正在等待锁的单个线程。notifyAll唤醒正在等待锁的所有线程。
Calculator类扩展了Thread。同步块在run方法内部。for循环和notify方法在同步块中。在main方法内部,创建了一个线程的实例,并在该实例上调用start方法。main方法将等待线程发出通知。在执行程序时,main方法等待run方法的整个执行过程,然后等待notify方法。一旦调用了notify方法,主方法就会停止等待并开始执行其余的代码。Main正在等待计算器线程完成。最后,输出求和的结果。
如果没有同步块,如果主方法有如下代码,它将输出为零,因为它没有等待另一个线程完成。
计算器t1 =新计算器();
t1。开始();
System.out.println (t1.sum);
Java中的睡眠和等待有什么相似之处?
- 睡眠和等待都是在Java中实现多线程时可以使用的方法
Java中睡眠和等待的区别是什么?
Java中的睡眠vs等待 |
|
sleep方法使当前线程暂停执行指定的毫秒数,这取决于系统计时器和调度器的精度和准确性。 | wait方法导致当前线程等待,直到另一个线程调用对象的notify或notifyAll方法。 |
与锁 | |
sleep方法在同步过程中不会释放对象上的锁。 | wait方法在同步期间释放锁。 |
的执行方法 | |
sleep方法在当前线程上执行。 | 在对象上调用wait方法。 |
相关的类 | |
sleep是Thread类的一个方法。 | 等待是Object类的一个方法。 |
完成 | |
休眠过程在指定的时间结束后完成。 | 通过调用notify或notifyAll方法来中断wait方法。 |
总结- - - - - -睡觉vs在家等待Java
操作系统上有多个进程正在运行。每个进程可以有多个线程。线程是操作系统中最小的处理单元。Java编程语言支持多线程。它允许同时运行多个线程。睡眠和等待是实现多线程时可以使用的两种方法。Java中sleep和wait的区别在于,sleep用于将当前线程的执行暂停指定毫秒数,而wait方法用于使当前线程等待,直到另一个线程调用对象的notify或notifyAll方法。
参考:
1.Java中的线程间通信- Javatpoint。.JavaTPoint.可以在这里
2.国际米兰的线程Java多线程通信|核心Java教程|学习今晚。可以在这里
留下一个回复