class FirstThread extends Thread
{
public void run(){
for(int i=0;i<20;i++)
System.out.println("FirstThread---->"+i);
}
}
class Test
{
public static void main(String args[]){
//生成线程类对象
FirstThread ft=new FirstThread();
//启动线程,线程开始运行
ft.start();
for(int i=0;i<20;i++)
System.out.println("main--->"+i);
}
}
从结果看出,两个线程是交替着执行的;
2.两种实现多线程的方法:继承Thread类,实现Runnable接口。
1)实现Thread类:
public class NumberThread extends Thread
{
private int k; //序列初始值
public NumberThread(String name,int k){
super(name);
this.k=k;
}
public NumberThtead(String name){
this(name,0);
}
public void run(){//覆盖run()方法的线程体
int i=k;
System.out.print("\n"+this.getName()+": ");
while(i<50){
System.out.print(i+" ");
i+=2;
}
System.out.println(this.getName()+"结束");
}
public static void main(String args[]){
NumberThread thread_odd=new NumberThread("奇数线程",1);
NumberThread thread_even=new NumberThread("偶数线程",2);
thread_odd.start();
thread_ever.start();
System.out.println("activeCount="+thread_even.activeCount()); //返回当前活动线程个数
}
}
2)实现Runnable接口:
例1,
class RunnableImpl implements Runnable
{
public void run(){
for(int i=0;i<20;i++){
System.out.println("Runnable--->"+i);
}
}
}
class Test
{
public static void main(String args[])
{
//生成一个Runnable接口实现类的对象
RunnableImpl ri=new RunnableImpl();
//生成一个Thread对象,并将Runnable接口实现类的对象作为参数
//传递给该Thread对象
Thread t=new Thread(ri);
//通知Thread对象,执行Start方法
t.start();
}
}
例2,
public class NumberRunnable implements Runnable
{
private int k;
public NumberRunnable(int k){
this.k=k;
}
public NumberRunnable(){
this(0);
}
public void run(){
int i=k;
System.out.println();
while(i<50){
System.out.print(i+" ");
i+=2;
}
System.out.println("结束!");
}
public static void main(String args[]){
NumberRunnable odd=new NumberRunnable(1);
Thread thread_odd=new Thread(odd,"基数线程");
thread_odd.start();
new Thread(new NumberRunnable(2),"偶数线程").start();
}
}