자바 는 스 레 드 의 일시 정지 와 계속 을 실현 합 니 다.
요 며칠 동안 의 프로젝트 에서 고객 은 수 요 를 주 었 습 니 다. 제 가 임 무 를 시작 할 수 있 기 를 바 랍 니 다. 멈 추고 싶 을 때 멈 추고 싶 을 때 시작 합 니 다!그래서 요 며칠 동안 스 레 드 에 있 는 방법 을 악 보 했 습 니 다. 기록 하고 공유 해 드 리 겠 습 니 다.
본문
사용자 정의 스 레 드 클래스 (MyThread)
package com.example.wangjun.myapplication;
import android.util.Log;
public class MyThread extends Thread {
private final Object lock = new Object();
private boolean pause = false;
/**
*
*/
void pauseThread(){
pause = true;
}
/*
*/
void resumeThread(){
pause =false;
synchronized (lock){
lock.notify();
}
}
/**
* run , ,
*/
void onPause() {
synchronized (lock) {
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Override
public void run() {
super.run();
int index = 0;
while(true){
while (pause){
onPause();
}
try {
System.out.println(index);
Thread.sleep(50);
++index;
}catch (Exception e){
e.printStackTrace();
break;
}
}
}
}
위의 코드 에 주석 이 있 습 니 다. 사실은 모두 가 알 수 있 을 것 입 니 다. 그러면 우 리 는 동기 자물쇠
synchronized
를 사용 하여 Objecy
유형의 lock
를 동기 화하 고 OnPause()
방법 에서 wait()
방법 을 진행 합 니 다. 스 레 드 대기, 그리고 resumeThread()
방법 에서 잠 금 해제 notify()
를 했 기 때문에 우 리 는 스 레 드 의 일시 정지 와 계속 작업 을 할 수 있 습 니 다.방법의 호출
MyThread my = new MyThread();
Thread thread = new Thread(my);
thread.start();
try {
sleep(1000);
my.pauseThread();
sleep(5000);
my.resumeThread();
} catch (InterruptedException e) {
e.printStackTrace();
}
나타 난 결 과 는 1 초 전에 미 친 듯 이 증가 하고 5 초 후에 다시 증가 하기 시작한다.
마지막.
지금 은 간단 한 스 레 드 일시 정지 와 계속 입 니 다. 여러분 들 이 이 기초 에 따라 상응하는 조정 과 깊이 를 진행 할 수 있 기 를 바 랍 니 다. 감사합니다!!!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.