多线程的学习

说线程之前,先介绍一下进程,进程是指一个正在执行中的程序。而线程则是进程中的一个独立的控制单元,线程在控制着进程的执行。

一个进程中至少包括一个线程。

假如一个进程包括多个线程,一个线程控制着一种功能,那么,当执行一个进程时,cpu会迅速的切换执行不同的线程,从而达到多个功能同时进行的效果。

在一个程序中,如果要加入自定义的线程以达到不同功能同时进行的效果,有两种方法:1,继承法;2,实现法。

================================================================================================================================1,继承法:

步骤:

1,自定义类并继承Thread类

2,重写run方法,将要运行的代码写入run方法中(run方法中的代码就是自定义线程的功能的描述)

3,在主函数中建立自定义线程类的对象并调用其start()方法(用于启动线程并调用run()方法)

实例说明:

class NewThread extends Thread
{
	public void run()
	{
		for(int i=0;i<60;i++)
			System.out.println("Thread run");
	}
}
class Demo 
{
	public static void main(String[] args) 
	{
		NewThread n=new NewThread();
		n.start();
		for(int i=0;i<60;i++)
			System.out.println("main run");
	}
}
部分结果:


不难发现,执行是交错进行的,也就是说同时执行两个功能,而且每次执行的次序都不一样,取决于cpu的切换执行次序。

继承法加入自定义线程时要注意一个问题,如果对已经开启的线程对象再次调用start()方法时,在运行过程中会报错。

===============================================================================================================================2,实现法:

步骤:

1,定义一个自定义线程类并让其实现Runnable接口

2,重写Runnable接口中的run()方法,也是用来记录线程要运行的代码

3,通过Thread类来建立线程对象

4,将Runnable接口的子类即自定义线程类的对象作为实参传递给Thread类的构造函数

5,调用Thread类的start方法,用于开启线程并调用自定义线程类中的run方法

注意:之所以能够用实现法建立新线程是因为在系统定义的Thread类中包括一条构造函数:Thread(Runnable  target)

实例说明:

class NewThread implements Runnable
{
	public void run()
	{
		for(int i=0;i<60;i++)
			System.out.println("Thread run");
	}
}
class Demo 
{
	public static void main(String[] args) 
	{
		Thread n=new Thread(new NewThread());
		n.start();
		for(int i=0;i<60;i++)
			System.out.println("main run");
	}
}
结果和继承法一模一样。

实现法的优点:如果自定义线程类已经继承了一个父类,那么就不能再继承Thread类了,因为java不支持多继承,而实现法正好能完美的解决这个问题,因此在实际运用中,建议使用实现法。

===============================================================================================================================

小知识点:

Thread类中提供了getName和setName的方法用来获取和定义线程的名字,定义线程的名字时,也可以通过Thread的构造函数:Thread(String name)来实现



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值