多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。

Java多线程是由JVM来实现,不必关心操作系统的调用问题。

假如我们要实现如下功能:

public class Test {
public static void main(String[] args) {
for(int i=0;i<100;i++){ //和尚念经100遍
System.out.println(i+"南无阿弥陀佛!");
}
for(int i=0;i<100;i++){ //道士讲经100遍
System.out.println(i+"道可道、非常道!");
}
}
}

  即和尚念经100遍和道士讲经100遍

传统方式我们只能等待一个人做完了,第二个人才能开始工作。而实际情况他们应该能够同时工作,且各干各的互不干扰。

于是这时我们就要使用多线程技术。

class HeShang extends Thread{ //继承Thread类
public void run(){ //把任务写进run方法里面
for(int i=0;i<100;i++){
System.out.println(i+"南无阿弥陀佛!");
}
}
}
class DaoShi extends Thread{
public void run(){
for(int i=0;i<100;i++){
System.out.println(i+"道可道、非常道!");
}
}
}
public class Demo {
public static void main(String[] args) {
HeShang heShang=new HeShang();
DaoShi daoShi=new DaoShi();
heShang.start();
daoShi.start();
}
}

  运行后如图:

刚才我们就实现了多线程

Java中多线程实现方式主要有两种(1)继承Thread类(2)实现Runnable接口

使用Runnable接口实现多线程

class HeShang implements Runnable{
public void run(){
for(int i=0;i<100;i++){
System.out.println(i+"南无阿弥陀佛!");
}
}
}
class DaoShi implements Runnable{
public void run(){
for(int i=0;i<100;i++){
System.out.println(i+"道可道、非常道!");
}
}
}
public class Demo {
public static void main(String[] args) {
HeShang heShang=new HeShang();
DaoShi daoShi=new DaoShi();
//要用Thread来启动线程,代理设计模式
Thread t1=new Thread(heShang); //Thread构造方法可接收Runnable类型,向上转型,自动完成
t1.start();
new Thread(daoShi).start(); //匿名对象
}
}

  因为Runnable接口没有run方法,所以实现Runnable接口的类(HeShang or DaoShi)没有start方法,但是Thread是有start方法的。

我们使用代理,首先Thread构造方法可接收Runnable类型

之后用Thread对象启动start方法。

也可以使用匿名对象一行代码完成。

运行后,也能够实现多线程,如图所示:

最新文章

  1. Canvas 知识体系简单总结
  2. AngularJS结构简介
  3. 在Myeclipse中移除项目对Hibernate的支持
  4. 49. Sort Letters by Case
  5. 查询Linux系统最后重启时间的三个方法
  6. les nationalit&#233;s et les pays
  7. sql tran, c# SqlTransaction , TransactionScope 的用法
  8. 【Python实践-1】求一元二次方程的两个解
  9. Luogu5290 十二省联考2019春节十二响(贪心+启发式合并)
  10. SpringMvc参数传递中乱码问题
  11. yum-Remi源配置
  12. 有关java反射机制 小结
  13. php的explode()和implode()方法
  14. bzoj1056/1862 [Zjoi2006]GameZ游戏排名系统
  15. JSON 使用 教程
  16. Geeks : Kruskal’s Minimum Spanning Tree Algorithm 最小生成树
  17. Educational Codeforces Round 13 A. Johny Likes Numbers 水题
  18. printf重定向问题
  19. android.support.v4.app.Fragment vs android.app.Fragment 的区别
  20. Bzoj 4524 [Cqoi2016]伪光滑数(堆)

热门文章

  1. docker--docker介绍
  2. ES6新数据类型Symbol
  3. 第二次java面试(用友山东济南分公司)
  4. SpringMVC Controller单例和多例(转)
  5. 轻便的gb28181协议中的rtp+ps格式视频流的封装和解析
  6. 1-基于Xilinx XCKU115的半高PCIe x8 硬件加速卡
  7. python内存分析
  8. 一、苹果Assets.car文件解析图片
  9. Tomcat支持SSL加密网站
  10. BZOJ3129/洛谷P3301方程(SDOI2013)容斥原理+扩展Lucas定理