이 글은 Java에서 sleep()과 wait()의 차이점을 설명하는 관련 정보를 주로 소개합니다. 도움이 필요한 친구들은 이 글을 참조하세요.
Java에서 sleep()과 wait에 대한 자세한 설명 ()
sleep() 메소드의 경우 먼저 이 메소드가 Thread 클래스에 속한다는 것을 알아야 합니다. wait() 메소드는 Object 클래스에 속합니다.
sleep() 메서드는 프로그램이 지정된 시간 동안 실행을 일시 중지하고 CPU를 다른 스레드에 넘겨주지만 모니터링 상태는 계속 유지되며 지정된 시간이 지나면 자동으로 실행을 재개합니다.
sleep() 메서드를 호출하는 동안 스레드는 객체 잠금을 해제하지 않습니다.
wait() 메소드가 호출되면 스레드는 객체 잠금을 포기하고 이 객체를 기다리는 대기 잠금 풀에 들어갑니다. 이 객체에 대해 inform() 메소드가 호출된 후에야 스레드는 객체 잠금에 들어갑니다. 풀링하고 개체 잠금을 획득할 준비를 합니다.
무슨 뜻인가요?
설명 예:
/** * */ package com.b510.test; /** * java中的sleep()和wait()的区别 * @author Hongten Java学习交流QQ群:589809992 我们一起学Java! * @date 2013-12-10 */ public class TestD { public static void main(String[] args) { new Thread(new Thread1()).start(); try { Thread.sleep(5000); } catch (Exception e) { e.printStackTrace(); } new Thread(new Thread2()).start(); } private static class Thread1 implements Runnable{ @Override public void run(){ synchronized (TestD.class) { System.out.println("enter thread1..."); System.out.println("thread1 is waiting..."); try { //调用wait()方法,线程会放弃对象锁,进入等待此对象的等待锁定池 TestD.class.wait(); } catch (Exception e) { e.printStackTrace(); } System.out.println("thread1 is going on ...."); System.out.println("thread1 is over!!!"); } } } private static class Thread2 implements Runnable{ @Override public void run(){ synchronized (TestD.class) { System.out.println("enter thread2...."); System.out.println("thread2 is sleep...."); //只有针对此对象调用notify()方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。 TestD.class.notify(); //================== //区别 //如果我们把代码:TestD.class.notify();给注释掉,即TestD.class调用了wait()方法,但是没有调用notify() //方法,则线程永远处于挂起状态。 try { //sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程, //但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。 //在调用sleep()方法的过程中,线程不会释放对象锁。 Thread.sleep(5000); } catch (Exception e) { e.printStackTrace(); } System.out.println("thread2 is going on...."); System.out.println("thread2 is over!!!"); } } } }
실행 효과:
enter thread1... thread1 is waiting... enter thread2.... thread2 is sleep.... thread2 is going on.... thread2 is over!!! thread1 is going on .... thread1 is over!!!
코드를 주석 처리하는 경우:
1 TestD.class.notify();
실행 효과:
enter thread1... thread1 is waiting... enter thread2.... thread2 is sleep.... thread2 is going on.... thread2 is over!!!
프로그램은 항상 보류 상태입니다.
위 내용은 Java에서 sleep()과 wait()의 차이점에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

구성 방법 Apache의 .htaccess 구성을 Nginx로 변환하는 방법 프로젝트 개발에서 서버를 Apache에서 Nginx로 마이그레이션 해야하는 상황을 종종 만나십시오. AP ...

JavaweB 애플리케이션 성능 최적화 : Javaweb 응용 프로그램 개발에서 DAO 수준의 엔티티 클래스 캐싱의 타당성 탐색, 성능 최적화는 항상 개발자의 초점이었습니다. 어느 하나...

극지 좌표계 하에서 이중 적분을 해결 하면서이 기사는 극성 좌표 아래의 이중 적분에 대한 질문에 대해 자세히 설명합니다. 이 질문은 포인트 영역을 제공하고 통합됩니다 ...

높은 동시성 환경에서 스크립트 작업의 고유성을 보장하고 운영 상태를 모니터링하는 방법은 무엇입니까? 이 기사는 클러스터 환경에서 아웃 바운드 발을 보장하는 방법을 살펴볼 것입니다 ...

부모 클래스의 setName 메소드를 상속하여 서브 클래스가 개인 속성을 설정하는 방법에 대해. 프로그래밍, 특히 Java, 서브 클래스 및 ...와 같은 객체 지향 프로그래밍 언어에서 ...

Eclipsepaho의 Mqttasyncclient를 사용하여 로컬 emqx에 연결할 때 사용자 이름 및 비밀번호 인증 실패 문제를 해결하는 방법? 자바와 일식 사용 ...

일부 애플리케이션이 제대로 작동하지 않는 회사의 보안 소프트웨어에 대한 문제 해결 및 솔루션. 많은 회사들이 내부 네트워크 보안을 보장하기 위해 보안 소프트웨어를 배포 할 것입니다. ...

Java의 매개 변수로 WeChat 애플릿 QR 코드를 생성하고 HTML 페이지에 표시하는 것이 일반적인 요구 사항입니다. 이 기사는 J ... 사용 방법에 대해 자세히 논의 할 것입니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구
