比较相似术语之间的差异

之间的区别

首页 / 技术 / 它 / 编程 /Java中睡眠和等待的区别

Java中睡眠和等待的区别

2018年3月29日发布的Lithmee

关键区别-睡觉和等待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。它使当前正在执行的线程在指定的毫秒数内临时停止执行。如果另一个线程中断了当前线程,则在抛出此异常时清除当前线程的中断状态。

Java中睡眠和等待的区别

图01:带有sleep方法的Java程序

根据上面的程序,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唤醒正在等待锁的所有线程。

在java_图02中睡眠和等待的区别

图02:计算器类

Java中睡眠和等待的关键区别

图03:Main Method

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教程|学习今晚。可以在这里

相关文章:

QTP 9.5和QTP 10的区别 链接器和加载器的区别链接器和加载器的区别 源代码与字节码的区别源代码与字节码的区别 Perl和Python的区别Perl和Python的区别 C和客观C的区别C和客观C的区别

了下:编程标记:在Java差异中睡眠和等待,在Java的相似性中睡觉和等待,睡眠完成,睡在Java,在Java类中睡觉,java定义,在Java执行中休眠,在Java Lock中休眠,Java中等待,在Java类中等待,在Java完成中等待,在Java定义中等待,在Java执行中等待,在Java锁中等待

关于作者:Lithmee

Lithmee Mandula是计算机系统工程专业的荣誉工学学士毕业生。她目前正在攻读计算机科学硕士学位。她在写作和研究领域的兴趣包括编程、数据科学和计算机系统。

留下一个回复取消回复

您的电邮地址将不会公布。必填项已标记*

请求的文章

特色的帖子

冠状病毒和感冒症状的区别

冠状病毒和感冒症状的区别

冠状病毒与SARS的区别

冠状病毒与SARS的区别

冠状病毒和流感的区别

冠状病毒和流感的区别

冠状病毒和Covid - 19的区别

冠状病毒和Covid - 19的区别

你可能会喜欢

氦和氧的区别

氦和氧的区别

哺乳动物的活动范围和领地的区别

供体杂质和受体杂质的区别

供体杂质和受体杂质的区别

丙酮酸和丙酮酸的区别

丙酮酸和丙酮酸的区别

HSPA与HSPA+网络技术的区别

最新的文章

  • 百里香芳樟醇和百里香酚的区别是什么
  • MCT和LCT的区别是什么
  • 休闲服和睡衣有什么区别
  • BHA和BHT的区别是什么
  • 淀粉样变和多发性骨髓瘤的区别是什么
  • 肉豆蔻酸和硬脂酸的区别是什么
  • 首页
  • 职位空缺
  • 关于
  • 请求的文章
  • 联系我们

版权©2010 - 2018之间的区别.保留所有权利。使用条款和隐私政策:法律.