实现线程
实现线程的第一个方法
编写一个类,继承java.Lang.Thread,重写run方法
怎样创建线程对象?new
怎么启动线程?调用start()方法:
start()方法的作用是,启动一个分支线程,在JVM中开辟一个新的
栈空间,只要新的栈空间开辟出来了,start()方法就结束了。线程就启动成功了。
启动的线程会自动调用run()方法,并且run()方法在分支栈的底部。
run()方法在分支栈的底部,main()方法在主栈的底部。run和main是平级的。
class Thread1 extends Thread{
public void run(){
//此段程序运行在分支线程中
for(int i=0;i<10;i++)
System.out.println("分支线程--"+i);
}
}
public class myfile{
public static void main(String[] args) {
//这里是main方法,这里的代码属于主线程,在主栈中运行
//新建一个分支线程对象
Thread1 thread1=new Thread1();
//启动线程
thread1.start();
//这里的代码属于主线程
for(int i=0;i<10;i++)
System.out.println("主线程--"+i);
}
}
主线程–0
主线程–1
主线程–2
主线程–3
分支线程–0
分支线程–1
分支线程–2
分支线程–3
分支线程–4
主线程–4
主线程–5
主线程–6
主线程–7
分支线程–5
分支线程–6
主线程–8
分支线程–7
分支线程–8
分支线程–9
主线程–9
实现线程的第二个方法
编写一个类,实现java.Lang.Runnable接口。
创建一个可运行的对象:
Myrunnable myrunable=new Myrunnable();
将可运行的对象封装成一个线程对象:
Thread r=new Thread(myrunable);
启动线程:
r.start();
class Myrunnable implements Runnable{
@Override
public void run() {
for(int i=0;i<10;i++)
System.out.println("分支线程--"+i);
}
}
public class myfile{
public static void main(String[] args) {
//创建一个可运行的对象
Myrunnable myrunable=new Myrunnable();
//将可运行的对象封装成一个线程对象
Thread r=new Thread(myrunable);
//启动线程
r.start();
for(int i=0;i<10;i++)
System.out.println("主线程--"+i);
}
}
主线程–0
分支线程–0
分支线程–1
主线程–1
主线程–2
主线程–3
主线程–4
主线程–5
主线程–6
主线程–7
主线程–8
主线程–9
分支线程–2
分支线程–3
分支线程–4
分支线程–5
分支线程–6
分支线程–7
分支线程–8
分支线程–9