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

Java多线程基本概念

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

Java多线程基本概念

一,概念:  1.1)什么是主线程与子线程:

Java程序运行时:jvm会自动创建主线程,执行main方法;在主线程中创建的线程是子线程;


1.2)线程通过线程id和名称区分:

   1.1) Thread.currentThread().getId();   1.2) Thread.currentThread().getName()


二)多线程的创建方式:

Java多线程的创建方式有三种:

①,继承Thread类;

②,实现Runnable接口;

③,实现Callable接口;

3.1 继承Thread类

1.  定义一个类,继承自Thread类,并重写该类的run方法;( 该run方法的方法体就代表了线程需要完成的任务,因此,run方法的方法体被称为线程执行体。)

2.  创建Thread子类的对象,即创建了子线程;

3.  用上一步创建好的线程对象的start方法来启动该线程;

3.2 实现Runnable接口

 第一种方式:

 1.  定义一个Runnable接口的实现类,并重写该接口中的run方法,该run方法的方法体同样是该线程的线程执行体;

2.  创建Runnable实现类的实例对象,并以此实例对象作为Thread类的构造函数的参数,来进行创建Thread类的对象,该Thread对象才是真正的线程对象;

3.  调用线程对象的start方法来启动该线程;


 第二种方式:

1. 继承Runnable接口,并重写run方法;

2. 实例化Runnable接口的实现类;

3. 创建Thread类的对象,同时,将第二步中实例化过Runnable接口的实现类的对象,作为Thread(构造函数)的实例化时的参数,给传进去;

4. 最后启动Thread类实例化过的对象就可以了,即start()方法;

5. 例如:

 
// 这是一个匿名内部类,这个ticket就是Runnable的实现类(这个类是看不见的)的实例化对象;
Runnable ticket=new Runnable( ) {   
 public void run( ) { …… }  // run方法体为该线程的线程执行体
};

// 以此实例(即ticket)作为Thread类的构造函数的参数,进行创建Thread的对象,创建出来的这个对象才是真正的线程对象;
 new Thread(ticket).start();      
 

3.3 实现Callable接口(了解)

3.4 继承Thread类与实现Runnable接口的比较: 3.4.1)继承Thread类的方式

         - 没有资源共享,编写简单;         - 弊端:因为线程类已经继承了Thread类,则不能再继承其他类【单继承】

3.4.2)实现Runnable接口的方式

         -  可以多个线程共享同一个资源,所以非常适合多个线程来处理同一份资源的情况;         -  弊端:编程稍微复杂,不直观,如果要访问当前线程,必须使用Thread.currentThread()。

3.4.3)总结:

         - 实际上大多数的多线程应用,都采用实现Runnable接口的方式来实现【推荐使用匿名内部类】。

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

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

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