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