栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

多线程的初步理解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

多线程的初步理解

        1.背景

           作为CS党,每当我们学习到一个新的专业名词或术语的时候,总是会想一想,为什么要出现这种东西,以及从历史观的层面去思考会让我们收获裨益。同样的,这次讲的多线程也可以进行这样的思考。多线程,本质上是为了提高效率。生活中,这样的例子比比皆是,例如在一条有着收费站的高速公路上,面对每天成千上万的汽车流量,倘若只设置一条收费闸,未免会变得手忙脚乱且效率低下。这时,我们将在这条高速公路上在多添加几个收费站,减缓单条收费的压力,这效率就立马上来了。再讲个更贴切于CS的例子:一个大公司,接到一个项目,项目被分解为各个任务(需求分析、算法设计、代码实现等等),这其中,整个项目我们可以当作是一个进程,而在改进程中具体被分配下来的各项任务可以相对于是线程(它们在同时进行,暂时忽略先后关系)。讲到这,线程的初步感性认知便出现了:一个任务,被分配为几个小任务点同时进行,而这些任务点便是线程,任务就是进程。

          2.严谨定义

             聊完背景,可以正式说明其在CS中的定义了:线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位,而多线程就是指从软件或者硬件上实现多个线程并发执行的技术,具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。

            3.在Java中的线程实现方法

                (1)继承Thread类

                         线程的启动实现离不开Thread类的功劳,Thread英文意思是“线”的意思,让其作为线程功能的类,再合适不过。在Java中,Thread被默认已被导包,因此已经不需要我们显示导包了。简单来说,通过自定义一个类,继承Thread类,再重写其run方法,

然后在main方法中创建一个实例对象,调用start方法启动线程即可。注意:不是调用run方法,而是start方法(倘若是run,则依然会像普通调用一样顺序执行)

                          代码例子:

                            

public class TestThread1 extends Thread {
	
	  //重写run方法
	  public void run() {
		  
		    for(int i=0;i<200;i++) {
		    	
		    System.out.println("我是run线程,我在创建第"+i+"各线程");
		    }
		  
		  
	  }

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		  TestThread1 test=new TestThread1();//创建实例对象
		 test.start();
		  
		  
		  for(int i=0;i<200;i++) {
			  
			  System.out.println("我是主线程main,我在创建第"+i+"个进程");
		  }

	}

}

                          

                (2)实现Runnable接口

                        通过构造类实现Runnable接口,覆写run方法,再创建一个实例对象,将其作为参数抛入到Thread类的构造器中。

                        代码实现:

                         

public class ThreadDemo2 implements Runnable{

                 public void run(){



                       for(int i=0;i<=20;i++){

                           System.out.println("我是run线程,我在创建第"+i+"个线程");

}

                
 

  public static void main(String[] args){

                 ThreadDemo2 test=new ThreadDemo2();
                 new Thread(test).start();//将类对象作为参数抛入Thread构造器
                 

                 for(int i=0;i<=20;i++){

                      System.out.println("我是主线程,我在创建第"+i+"个线程");
}

 
}


}

                (3)实现Callable接口

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/631741.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号