Java通过Runnable来实现多线程的三种书写方式

时间:2021-06-25作者:klpeng分类:IT综合浏览:227评论:0

        

        java实现多线程中的一种方法就是通过实现Runnable接口然后在传入Thread对象中,之所以是这样是因为Thread类的一个构造函数有实现一个传入Runnable的接口,这也是为何有多个不同代码的表达形式原因之一。

        下面的例子是多线程输出0~5和输出前面带有一个空格的0~5

1.定义一个实现了Runnable接口的类,将该类的对象传入Thread类的构造函数中。


public class RunnableImp implements Runnable{

	@Override
	public void run() {
		for(int i=0;i<=5;i++) {
			System.out.println(i);
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {

			}
		}
	}
	
}

主函数的代码

public class ThreadTest {
	
	public static void main(String[]args)  {
		RunnableImp runnableimp = new RunnableImp();
		Thread thread = new Thread(runnableimp);
		thread.start();
		for(int i=0;i<=5;i++) {
			System.out.println(" "+i);
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				
				
			}
		}

	}
}

2.使用匿名内部类

        就不需要额外创建一个实现Runnable接口的类了。之所以可以这样写,因为重写的是Runnable接口的run()方法,而执行的确实Thread类中的start()方法。

        使用匿名内部类表示是不局限于表示接口的,也可以表示抽象类,普通类。

public class ThreadTest {
	
	public static void main(String[]args)  {

		new Thread( new Runnable() {
			@Override
			public void run() {
				for(int i=0;i<=5;i++) {
					System.out.println(i);
					try {
						Thread.sleep(1000);
					} catch (InterruptedException e) {

					}
				}
			}
				
			}
				
				
		).start();
		
		for(int i=0;i<=5;i++) {
			System.out.println(" "+i);
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				
				
			}
		}

	}
}

        

3.使用Lambda表达式

        之所以可以使用Lambda表达式来书写,是因为Runnable接口只有一个需要重写的方法,

        也是不需要在额外创建一个实现Runnable接口的类。只是为了代码的简短,但是不推荐。

        而使用Lambda表达的形式必须要是接口。

public class ThreadTest {
	
	public static void main(String[]args)  {

		new Thread( ()->{
				for(int i=0;i<=5;i++) {
					System.out.println(i);
					try {
						Thread.sleep(1000);
					} catch (InterruptedException e) {

					}
				}
			}
			
		).start();
		
		for(int j=0;j<=5;j++) {
			System.out.println(" "+j);
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				
				
			}
		}

	}
}

输出的结果大同小异,因为不知道谁争得过。

Java通过Runnable来实现多线程的三种书写方式

打赏
文章版权声明:除非注明,否则均为彭超的博客原创文章,转载或复制请以超链接形式并注明出处。
相关推荐

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

猜你喜欢