SlideShare a Scribd company logo
1 of 8
Download to read offline
Java 多线程




线程在进程基础上的一种划分。
一个进程就表示一个程序,在一个程序上可以同时运行多个子程序,则这些子程序称为线程。




                             E-Mail:mldnqa@163.com
E-Mail:mldnqa@163.com
进程:在一个时间段内只能完成一件事情。
  A B,只能做一件事情

线程:在进程基础上划分,之后在同一个时间段内可以比传统进程完成的功能更多。
  A B,能多件事情

  张三在公司上班,张三原本的业务是做打字员  打字一个工作即可。 == 进程
  张三业务扩展。张三即可以做打字员,又可以做程序开发人员,也同时兼顾了卫生管理员 == 线程

  CPU 只有一个,是指在同一个时间段内可以完成多个程序,但在同一个时间点内,只能有一个程序
工作。




                               E-Mail:mldnqa@163.com
E-Mail:mldnqa@163.com
那么该如何去实现多线程呢?
  线程的实现需要操作系统的支持。

 JAVA 中只需要关心程序,而程序具体是如何与底层交互的则不用去关心。




                               E-Mail:mldnqa@163.com
java.lang 此包为 JAVA 程序默认导入的包。

一个类只要继承了 Thread 类,则表示此类就实现了多线程。

如果在程序中直接去调用 run 方法,实际上只是类.方法的调用,而没有启动操作系统的支持。

如果要执行一个线程,则要调用:public void start()方法

通过 start() 调用的是子类中 run()方法。
  此时的程序是交替运行的,不是像之前那样去调用 run()方法进行的顺序执行。

问题?
  一个类只能通过继承 Thread 类完成多线程,本身会有一个程序的局限 —— Java 只支持单继承,如
果这个类需要再同时继承另外一个类的时候,则使用 Thread 类会发现无法做到。

在 JDK 中为用户提供了一个 Runnable 接口,实现此接口也可以实现多线程。

之前的程序继承的是 Thread 类,在 Thread 类提供了专门用于启动线程的操作       start()方法。



                                       E-Mail:mldnqa@163.com
通过查找 JDK 文档,可以发现在 Thread 类中有如下方法;
  public Thread(Runnable target)

既然 Runnable 接口与 Thread 类都可以实现多线程,那么该选谁?
  · 实现接口,解决单继承局限。

Runnable 接口与 Thread 类之间到底有什么关系?




特点:继承 Thread 多个线程之间不能实现资源的共享,而实现了 Runnable 接口之后可以实现多个线程之
间资源的共享。

举例:火车票     售票点,100 张票




                                          E-Mail:mldnqa@163.com
E-Mail:mldnqa@163.com

More Related Content

What's hot

人人网开发一站式体验
人人网开发一站式体验人人网开发一站式体验
人人网开发一站式体验zhen chen
 
Java 推荐读物
Java 推荐读物Java 推荐读物
Java 推荐读物yiditushe
 
1, java intro
1, java intro1, java intro
1, java introted-xu
 
Effective linux.3.(diagnosis)
Effective linux.3.(diagnosis)Effective linux.3.(diagnosis)
Effective linux.3.(diagnosis)wang hongjiang
 
前端自動化工具
前端自動化工具前端自動化工具
前端自動化工具國昭 張
 
Java Tutorial:Learn Java in 06:00:00
Java Tutorial:Learn Java in 06:00:00Java Tutorial:Learn Java in 06:00:00
Java Tutorial:Learn Java in 06:00:00Justin Lin
 
1号店数据库架构
1号店数据库架构1号店数据库架构
1号店数据库架构Louis liu
 
基于OpenResty的百万级长连接推送
基于OpenResty的百万级长连接推送基于OpenResty的百万级长连接推送
基于OpenResty的百万级长连接推送OpenRestyCon
 
Exodus重构和向apollo迁移
Exodus重构和向apollo迁移Exodus重构和向apollo迁移
Exodus重构和向apollo迁移wang hongjiang
 

What's hot (15)

善用工具
善用工具善用工具
善用工具
 
人人网开发一站式体验
人人网开发一站式体验人人网开发一站式体验
人人网开发一站式体验
 
Java 推荐读物
Java 推荐读物Java 推荐读物
Java 推荐读物
 
1, java intro
1, java intro1, java intro
1, java intro
 
Effective linux.3.(diagnosis)
Effective linux.3.(diagnosis)Effective linux.3.(diagnosis)
Effective linux.3.(diagnosis)
 
运维自动化
运维自动化运维自动化
运维自动化
 
Node分享 展烨
Node分享 展烨Node分享 展烨
Node分享 展烨
 
前端自動化工具
前端自動化工具前端自動化工具
前端自動化工具
 
Exodus2 大局观
Exodus2 大局观Exodus2 大局观
Exodus2 大局观
 
Java Tutorial:Learn Java in 06:00:00
Java Tutorial:Learn Java in 06:00:00Java Tutorial:Learn Java in 06:00:00
Java Tutorial:Learn Java in 06:00:00
 
1号店数据库架构
1号店数据库架构1号店数据库架构
1号店数据库架构
 
Aswan&hump
Aswan&humpAswan&hump
Aswan&hump
 
基于OpenResty的百万级长连接推送
基于OpenResty的百万级长连接推送基于OpenResty的百万级长连接推送
基于OpenResty的百万级长连接推送
 
All about NodeJS
All about NodeJSAll about NodeJS
All about NodeJS
 
Exodus重构和向apollo迁移
Exodus重构和向apollo迁移Exodus重构和向apollo迁移
Exodus重构和向apollo迁移
 

Viewers also liked

Flamingo land presention
Flamingo land presentionFlamingo land presention
Flamingo land presentionfalkirklad2003
 
Evaluación de desempeño
Evaluación de desempeñoEvaluación de desempeño
Evaluación de desempeñoDunnia Vargas
 
Flamingo land presention
Flamingo land presentionFlamingo land presention
Flamingo land presentionfalkirklad2003
 
Self Publishing Presentation
Self Publishing Presentation Self Publishing Presentation
Self Publishing Presentation Becca Hillburn
 
Introduction to the Artist Alley- Presented at Mechacon 2014
Introduction to the Artist Alley- Presented at Mechacon 2014Introduction to the Artist Alley- Presented at Mechacon 2014
Introduction to the Artist Alley- Presented at Mechacon 2014Becca Hillburn
 
Intro to Comic Craft pt1
Intro to Comic Craft pt1Intro to Comic Craft pt1
Intro to Comic Craft pt1Becca Hillburn
 

Viewers also liked (9)

Flamingo land presention
Flamingo land presentionFlamingo land presention
Flamingo land presention
 
Evaluación de desempeño
Evaluación de desempeñoEvaluación de desempeño
Evaluación de desempeño
 
123
123123
123
 
Flamingo land presention
Flamingo land presentionFlamingo land presention
Flamingo land presention
 
Self Publishing Presentation
Self Publishing Presentation Self Publishing Presentation
Self Publishing Presentation
 
Introduction to the Artist Alley- Presented at Mechacon 2014
Introduction to the Artist Alley- Presented at Mechacon 2014Introduction to the Artist Alley- Presented at Mechacon 2014
Introduction to the Artist Alley- Presented at Mechacon 2014
 
Lap ke hoach
Lap ke hoachLap ke hoach
Lap ke hoach
 
Intro to Comic Craft pt1
Intro to Comic Craft pt1Intro to Comic Craft pt1
Intro to Comic Craft pt1
 
Ch4. lap ke hoach
Ch4. lap ke hoachCh4. lap ke hoach
Ch4. lap ke hoach
 

Similar to 笔记

Java 1(Java概述)
Java 1(Java概述)Java 1(Java概述)
Java 1(Java概述)xzdbd
 
2. java introduction
2. java introduction2. java introduction
2. java introductionnetdbncku
 
J2ee经典学习笔记
J2ee经典学习笔记J2ee经典学习笔记
J2ee经典学习笔记yiditushe
 
线程与并发
线程与并发线程与并发
线程与并发Tony Deng
 
lua & ngx_lua 的介绍与应用
lua & ngx_lua 的介绍与应用lua & ngx_lua 的介绍与应用
lua & ngx_lua 的介绍与应用hugo
 
IKVM.NET 深入敵營的 Java
IKVM.NET 深入敵營的 JavaIKVM.NET 深入敵營的 Java
IKVM.NET 深入敵營的 Java建興 王
 
000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲ArBing Xie
 
Java Api Design
Java Api DesignJava Api Design
Java Api Designyiditushe
 
大公司的Java面试题集
大公司的Java面试题集大公司的Java面试题集
大公司的Java面试题集yiditushe
 
Java相关基础知识
Java相关基础知识Java相关基础知识
Java相关基础知识yiditushe
 
Java面试笔试题大汇总
Java面试笔试题大汇总Java面试笔试题大汇总
Java面试笔试题大汇总yiditushe
 
Java面试宝典
Java面试宝典Java面试宝典
Java面试宝典ma tao
 
Ian .net async programming
Ian .net async programmingIan .net async programming
Ian .net async programmingLearningTech
 
Java7 fork join framework and closures
Java7 fork join framework and closuresJava7 fork join framework and closures
Java7 fork join framework and closureswang hongjiang
 
Big Java, Big Data
Big Java, Big DataBig Java, Big Data
Big Java, Big DataKuo-Chun Su
 
51 cto下载 51cto信息图:openshift vs cloudfoundry
51 cto下载 51cto信息图:openshift vs cloudfoundry51 cto下载 51cto信息图:openshift vs cloudfoundry
51 cto下载 51cto信息图:openshift vs cloudfoundryHong Cai
 

Similar to 笔记 (20)

Java 1(Java概述)
Java 1(Java概述)Java 1(Java概述)
Java 1(Java概述)
 
beidakejian
beidakejianbeidakejian
beidakejian
 
2. java introduction
2. java introduction2. java introduction
2. java introduction
 
SCJP ch02
SCJP ch02SCJP ch02
SCJP ch02
 
J2ee经典学习笔记
J2ee经典学习笔记J2ee经典学习笔记
J2ee经典学习笔记
 
线程与并发
线程与并发线程与并发
线程与并发
 
lua & ngx_lua 的介绍与应用
lua & ngx_lua 的介绍与应用lua & ngx_lua 的介绍与应用
lua & ngx_lua 的介绍与应用
 
IKVM.NET 深入敵營的 Java
IKVM.NET 深入敵營的 JavaIKVM.NET 深入敵營的 Java
IKVM.NET 深入敵營的 Java
 
Jni文档
Jni文档Jni文档
Jni文档
 
000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲
 
Java Api Design
Java Api DesignJava Api Design
Java Api Design
 
大公司的Java面试题集
大公司的Java面试题集大公司的Java面试题集
大公司的Java面试题集
 
Ant
AntAnt
Ant
 
Java相关基础知识
Java相关基础知识Java相关基础知识
Java相关基础知识
 
Java面试笔试题大汇总
Java面试笔试题大汇总Java面试笔试题大汇总
Java面试笔试题大汇总
 
Java面试宝典
Java面试宝典Java面试宝典
Java面试宝典
 
Ian .net async programming
Ian .net async programmingIan .net async programming
Ian .net async programming
 
Java7 fork join framework and closures
Java7 fork join framework and closuresJava7 fork join framework and closures
Java7 fork join framework and closures
 
Big Java, Big Data
Big Java, Big DataBig Java, Big Data
Big Java, Big Data
 
51 cto下载 51cto信息图:openshift vs cloudfoundry
51 cto下载 51cto信息图:openshift vs cloudfoundry51 cto下载 51cto信息图:openshift vs cloudfoundry
51 cto下载 51cto信息图:openshift vs cloudfoundry
 

笔记

  • 3. 进程:在一个时间段内只能完成一件事情。 A B,只能做一件事情 线程:在进程基础上划分,之后在同一个时间段内可以比传统进程完成的功能更多。 A B,能多件事情 张三在公司上班,张三原本的业务是做打字员 打字一个工作即可。 == 进程 张三业务扩展。张三即可以做打字员,又可以做程序开发人员,也同时兼顾了卫生管理员 == 线程 CPU 只有一个,是指在同一个时间段内可以完成多个程序,但在同一个时间点内,只能有一个程序 工作。 E-Mail:mldnqa@163.com
  • 5. 那么该如何去实现多线程呢? 线程的实现需要操作系统的支持。 JAVA 中只需要关心程序,而程序具体是如何与底层交互的则不用去关心。 E-Mail:mldnqa@163.com
  • 6. java.lang 此包为 JAVA 程序默认导入的包。 一个类只要继承了 Thread 类,则表示此类就实现了多线程。 如果在程序中直接去调用 run 方法,实际上只是类.方法的调用,而没有启动操作系统的支持。 如果要执行一个线程,则要调用:public void start()方法 通过 start() 调用的是子类中 run()方法。 此时的程序是交替运行的,不是像之前那样去调用 run()方法进行的顺序执行。 问题? 一个类只能通过继承 Thread 类完成多线程,本身会有一个程序的局限 —— Java 只支持单继承,如 果这个类需要再同时继承另外一个类的时候,则使用 Thread 类会发现无法做到。 在 JDK 中为用户提供了一个 Runnable 接口,实现此接口也可以实现多线程。 之前的程序继承的是 Thread 类,在 Thread 类提供了专门用于启动线程的操作 start()方法。 E-Mail:mldnqa@163.com
  • 7. 通过查找 JDK 文档,可以发现在 Thread 类中有如下方法; public Thread(Runnable target) 既然 Runnable 接口与 Thread 类都可以实现多线程,那么该选谁? · 实现接口,解决单继承局限。 Runnable 接口与 Thread 类之间到底有什么关系? 特点:继承 Thread 多个线程之间不能实现资源的共享,而实现了 Runnable 接口之后可以实现多个线程之 间资源的共享。 举例:火车票 售票点,100 张票 E-Mail:mldnqa@163.com