이 글은 자바의 스레딩 기술을 예제와 함께 좀 더 자세히 설명하고 있어 자바 프로그래밍에 대한 깊은 이해에 도움이 될 것이라고 믿습니다. 세부사항은 다음과 같습니다:
많은 사람들이 JAVA를 배울 때 스레드에 대해 어느 정도 이해하고 있으며, 우리가 Android 개발에 참여하기 시작했을 때 스레드가 얼마나 중요한지 알게 되었습니다. 이 기사에서는 참고용으로 Java 스레드 사용 경험을 공유할 것입니다.
우선, 모든 사람은 스레드와 프로세스가 동일한 것이 아니라는 점을 이해해야 합니다. 프로세스는 클래스 파일을 실행하는 데 필요한 것과 동일하며 스레드는 실제로 실행하기 위해 CPU 리소스를 호출하는 것입니다. 클래스 파일에는 일반적으로 하나의 프로세스만 있지만 스레드는 여러 개 있을 수 있습니다. 스레드 실행은 비동기 실행 방법입니다.
1. 메인 함수에서 다른 스레드를 시작하는 방법:
샘플 코드는 다음과 같습니다.
public class Thread_one { public static void main(String [] args){ Run run = new Run(); //run.run();//스레드와는 매우 다른 메소드 호출입니다. Thread thread = new Thread (run);//스레드를 시작하고 스레드의 run() 메서드를 호출합니다. for(int i=1; i<=20; i++){ System.out.println("main의 값 스레드 i: --------"+i); } }}class Run은 Runnable을 구현합니다{ @Override public void run() { for(int i=1; i<=20; i++){ System.out .println( "하위 스레드 i의 값: "+i) } }}
2. 스레드의 수면 방법
샘플 코드는 다음과 같습니다.
public class Thread_sleep { /* * 스레드 일시 중지*/ public static void main(String [] args){ Runone run = new Runone(); Thread 스레드 = new Thread.start(); (5000);//스레드 실행을 중단합니다.//thread.stop();//스레드를 중단하는 것에 비해 너무 거칠기 때문에 일반적으로 이 방법은 사용하지 않습니다. 하위 스레드를 강제로 닫아야 합니다. } catch (InterruptedException e) { e.printStackTrace(); } }}class Runone은 Runnable을 구현합니다.{ @Override public void run() { for(int i=1; i<10; i++ ){ try { Thread.sleep(1000 ); System.out.println("----"+new Date()+"-----") } catch (InterruptedException e) { return ;// 자식 스레드가 중단된 것을 발견하면 자식 스레드를 직접 닫습니다.} } }}
여기서 특별한 점은 thread.interrupt();가 스레드 실행을 중단할 수 있다는 것입니다. 중지하는 것보다 약간 더 부드럽지만 스레드를 닫는 가장 좋은 방법은 아닙니다.
public class Thread_stop { public static void main(String [] args){ Run three run = new Run three(); Thread th = new Thread(run) try { Thread.sleep(5000); InterruptedException e) { e.printStackTrace(); } run.setStop(); }} 클래스 Runnable 구현{ 부울 플래그; @Override public void run() { flag = true; { System.out.println("하위 스레드----"+(i++)); Thread.sleep(1000) } catch (InterruptedException e) { e.printStackTrace() } } } public void setStop(); 플래그 = 거짓 } }
스레드에서 병합 및 제공에 대해 간략하게 소개하겠습니다.
1. 스레드를 병합하는 방법 , 여기에서 Join() 메서드가 호출됩니다.
샘플 코드는 다음과 같습니다.
public class Thread_join { /* * 스레드 병합*/ public static void main(String [] args){ Runtwo run = new Runtwo(); Thread thread = new Thread.start(); ();//스레드 병합, 이는 메소드 호출과 동일합니다.} catch (InterruptedException e) { e.printStackTrace() } for(int i=0; i<10; i++){ System.out.println("main 스레드: "+i); } }}클래스 Runtwo는 Runnable을 구현합니다{ @Override public void run() { for(int i=0; i<10; i++){ System.out.println("하위 스레드: --- -"+i); } } }
2. 스레드를 포기하는 방법 여기에서는 아래와 같이 Thread의 Yield() 메소드가 호출됩니다.
public class Thread_yield { /**CPU 포기 * @param args */ public static void main(String[] args) { Th th = new Th("aaa") for(int i = 0; ; i<=10; i++){ System.out.println("메인 스레드---"+i) } }}class Th는 Thread를 확장합니다{ Th(){} Th(String s){super(s) ;} @Override public void run() { for(int i = 0; i<=10; i++){ if(i%3!=0){ System.out.println("child thread"+i) } else{ System.out.println("Sub-thread i="+i+" 스레드 스위치"); Yield();//이 메서드는 Thread에서 상속하는 경우에만 사용할 수 있습니다.} } }}
마지막으로 스레드 우선순위 문제를 여러분과 공유하고 싶습니다. 코드는 다음과 같습니다.
public class Thread_priority { /* * 우선순위는 스레드의 우선순위를 설정합니다. * Thread의 기본 우선순위는 5이며, Thread의 최대 우선순위는 10이고 최소값은 0입니다. */ public static void main(String [] args){ T1 t1; = new T1(); T2 t2 = new T2(); t1.start(); //t1.setPriority(Thread.NORM_PRIORITY+3); //t1 t2.start(); 확장 스레드 { @Override public void run() { for(int i = 0; i<50; i++){ System.out.println("Thread T1----"+i) } }}class T2 확장 Thread{ @Override public void run() { for(int i = 0; i<50; i++){ System.out.println("Thread T2"+i) } } }
위의 코드를 통해 여러분은 JAVA의 스레딩 메커니즘을 기본적으로 이해했다고 생각합니다. 이 글에서 설명하는 내용이 여러분의 Java 프로그래밍에 대한 심층적인 연구에 도움이 되기를 바랍니다.