JAVA中多线程的创建方式(二)-Runnable接口,以及于第一种方式相比的好处

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_42947972/article/details/102711159

JAVA中多线程的创建方式(二)

JAVA中多线程的创建方式(一)-Thread类

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接口了)

猜你喜欢

转载自blog.csdn.net/weixin_42947972/article/details/102711159