版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
JAVA中多线程的创建方式(二)
java多线程创建的第二种方式
步骤:
1.定义类实现Runnable接口
2.覆盖接口中的run方法,将线程的任务代码封装到run方法中.
3.通过Thread类创建线程对象,并将Runnable接口的子类对象作为Thread类的构造函数的参数进行传递
为什么?
因为线程的任务都封装在Runnable接口子类对象的run方法中
所以要在线程对象创建时就必须明确要运行的任务
4.调用线程的对象的start()方法,开启线程.
1.定义类实现Runnable接口
class Test implements Runnable
{
}
public class Demo{
public static void main(String[] args)
{
}
}
2.覆盖接口中的run方法,将线程的任务代码封装到run方法中.
class Test implements Runnable
{
public void run()
{
show();
}
public void show()
{
for(int i=0; i<20; i++)
{
System.out.println(Thread.currentThread().getName()+"........"+i);
}
}
}
public class Demo{
public static void main(String[] args)
{
}
}
3.通过Thread类创建线程对象,并将Runnable接口的子类对象作为Thread类的构造函数的参数进行传递
class Test implements Runnable
{
public void run()
{
show();
}
public void show()
{
for(int i=0; i<20; i++)
{
System.out.println(Thread.currentThread().getName()+"........"+i);
}
}
}
public class Demo{
public static void main(String[] args)
{
Test t = new Test ();
Thread t1 = new Thread(t);
Thread t2 = new Thread(t);
}
}
4.调用线程的对象的start()方法,开启线程.
class Test implements Runnable
{
public void run()
{
show();
}
public void show()
{
for(int i=0; i<20; i++)
{
System.out.println(Thread.currentThread().getName()+"........"+i);
}
}
}
public class Demo{
public static void main(String[] args)
{
Test t = new Test ();
Thread t1 = new Thread(t);
Thread t2 = new Thread(t);
t1.start();
t2.start();
}
}
运行的部分(太长了)结果:
可以把Test t = new Test ();
写成Runnablet = new Test ();
因为实现了接口,所以可以向上转型
限制特有功能访问
.
.
实现Runnable接口的好处
1.将线程的任务从线程的子类分离出来,进行单独封装.
按照面向对象的思想将任务的封装对象.
2.避免了单继承的局限性.
(因为如果子类已经继承了另外一个父类,但是还想要实现多线程,那么就能用Runnable接口了)