java 멀티스레드 학습 노트 (2) -Runnable
루틴을 만드는 두 번째 방식: Runnable 인터페이스를 실현합니다.
1, 클래스 구현 Runnable 인터페이스를 정의합니다.
2, 인터페이스에 있는 런 방법을 덮어쓰고 라인의 작업 코드를 런 방법에 봉합니다.
3, Thread 클래스를 통해 루틴 대상을 만들고 Runnable 인터페이스의 하위 클래스 대상을 Thread 클래스의 구조 함수의 매개 변수로 전달한다.
왜?루틴의 작업은 모두 Runnable 인터페이스 하위 클래스 대상의run 방법에 봉인되어 있기 때문입니다.
따라서 라인 대상을 만들 때 실행할 작업을 명확하게 해야 합니다.
4, 스레드 대상의 start 방법을 호출하여 스레드를 시작합니다.
Runnable 인터페이스의 이점 실현:
1, 라인의 임무를 라인의 하위 클래스에서 분리하여 단독으로 봉인한다.
대상을 향한 사상에 따라 임무의 봉인을 대상으로 하다.
2, 자바 단일 계승의 한계를 피했다.
그래서 라인을 만드는 두 번째 방식은 비교적 자주 사용된다.
class Demo implements Runnable//extends Fu // Demo , 。
// 。
{
public void run()
{
show();
}
public void show()
{
for(int x=0; x<20; x++)
{
System.out.println(Thread.currentThread().getName()+"....."+x);
}
}
}
class ThreadDemo
{
public static void main(String[] args)
{
Demo d = new Demo();
Thread t1 = new Thread(d);
Thread t2 = new Thread(d);
t1.start();
t2.start();
// Demo d1 = new Demo();
// Demo d2 = new Demo();
// d1.start();
// d2.start();
}
}
/*
class Thread
{
private Runnable r;
Thread()
{
}
Thread(Runnable r)
{
this.r = r;
}
public void run()
{
if(r!=null)
r.run();
}
public void start()
{
run();
}
}
class ThreadImpl implements Runnable
{
public void run()
{
System.out.println("runnable run");
}
}
ThreadImpl i = new ThreadImpl();
Thread t = new Thread(i);
t.start();
class SubThread extends Thread
{
public void run()
{
System.out.println("hahah");
}
}
//SubThread s = new SubThread();
//s.start();
*/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.