初识线程
线程实现有两种方法意识继承Thread类,二是实现接口
一继承Thread类
- 线程是不同的程序进程同时执行,一般继承run方法(规定死的),本例继承的类Thread
- 调用run方法,采用start的方式,若直接调用run方法则不会单独开启线程
- 案例效果
二实现接口
- 实现接口,继承implements Runnable,接口中有run方法
- 主程序中接口不能直接调用start方法,而是要经过new方法,Thread转化,转化方法入下
Xc2 xc2=new Xc2();//Xc是实现接口的类
Thread a=new Thread(xc2);//经过转化
a.start();
继承类案例:
class Xc extends Thread //创建线程所需要继承的类
{
public void run() //run方法是覆盖的父类方法,run方法是规定死的
{
for(int i=0;i<200;i++)
{
System.out.println("子函数");
}
}
}
public class L61
{
public static void main(String[] args)
{
Xc xc = new Xc();
//xc.run(); //调用run方法不能这样用,这样用就是先执行run方法,再执行下面的程序
xc.start(); //谁调用的start方法,程序就去自动调用run方法
//start会单独开启一个线程,而不是直接调用,下面的程序也会自动运行,即run方法和主函数方法都同时进行
//xc.start();
for(int i=0;i<200;i++)
{
System.out.println("主函数");
}
}
}
实现接口案例:
class Xc2 implements Runnable //不继承类,而是改成了实现接口
{
public void run()
{
for(int i=0;i<20;i++)
{
System.out.println("子函数");
}
}
}
public class L62
{
public static void main(String[] args)
{
Xc2 xc2=new Xc2();
Thread a=new Thread(xc2);
a.start();
for(int i=0;i<20;i++)
{
System.out.println("主函数");
}
}
}