多线程(英语: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方法。

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

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

Java多线程引例及实现多线程的方式的更多相关文章

  1. Java中 单例(Singleton)的两种方式

    第一种(饿汉式单例模式):在声明变量时实例化 public class Singleton { //静态初始化自动实例化 private static Singleton instance = new ...

  2. java懒汉式单例遇到多线程

    单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 在计算机系统中,线程池.缓存.日志对象.对话框.打印机.显卡的驱动程序对象常被设计成单例.这些应用都或多或少具有资源管理器的功 ...

  3. 高级java必会系列二:多线程经常使用的3个关键字:synchronized、ReentrantLock、volatile

    系列一讲解了多线程,本章讲解多线程开发中经常使用到的3个关键字synchronized.ReentrantLock.volatile. 一.synchronized 互斥锁,即操作互斥,并发线程过来, ...

  4. Java基础复习笔记系列 八 多线程编程

    Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...

  5. Java中线程的使用 (2)-多线程、线程优先级、线程睡眠、让步、阻塞

    Java中线程的使用 (2)-多线程.线程优先级.线程睡眠.让步.阻塞 (一)多线程使用方法 说明:创建每个新的线程,一定要记得启动每个新的线程(调用.start()方法) class Xc3 ext ...

  6. Java多线程(二)关于多线程的CPU密集型和IO密集型这件事

    点我跳过黑哥的卑鄙广告行为,进入正文. Java多线程系列更新中~ 正式篇: Java多线程(一) 什么是线程 Java多线程(二)关于多线程的CPU密集型和IO密集型这件事 Java多线程(三)如何 ...

  7. Android(java)学习笔记215:多线程断点下载的原理(JavaSE实现)

    1. 为什么需要多线程下载?     服务器的资源有限,同时的平均地分配给每个客户端.开启的线程越多抢占的服务的资源就越多,下载的速度就越块. 2. 下载速度的限制条件? (1)你的电脑手机宽带的带宽 ...

  8. Java并发(一)—— 使用多线程

    Java的线程机制是抢占式的,所谓的抢占式指的是每一个线程都会被分配一个指定大小的时间片,一旦这个时间片用完,就会通过上下文切换到另一个线程上去. 并发是主要是为了提高单处理器的性能.创建一个线程会有 ...

  9. “全栈2019”Java多线程第二章:创建多线程之继承Thread类

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

随机推荐

  1. 003/kubernetes基础:开启云原生之门(Mooc)

    一.简介:(https://www.imooc.com/learn/978) 在2017年Kubernetes战胜了两个强大的竞争对手Swarm和Mesos,成为容器管理与调度编排领域的首选平台和事实 ...

  2. Reverse Linked List(反转单向链表)

    来源:https://leetcode.com/problems/reverse-linked-list Reverse a singly linked list. 递归方法:递归调用直到最后一个节点 ...

  3. AcWing 154. 滑动窗口(模板)

    (https://www.acwing.com/problem/content/156/) 给定一个大小为n≤106n≤106的数组. 有一个大小为k的滑动窗口,它从数组的最左边移动到最右边. 您只能 ...

  4. POJ-2528 Mayor's posters (离散化, 线段树)

    题目传送门: POJ-2528 题意就是在一个高度固定的墙面上贴高度相同宽度不同的海报,问贴到最后还能看到几张?本质上是线段树区间更新问题,但是要注意的是题中所给数据范围庞大,直接搞肯定会搞出问题,所 ...

  5. TP5.1+Vue前后端分离实践

    配置: 主域名 www.demo.xyz 二级子域名 api.demo.xyz 列表项目其中api.demo.xyz加入了版本控制,使用的是URL路由传入方式 在route.php路由文件中配置,如下 ...

  6. ecshop 2.7 PC 微信扫描支付配置教程

    在ecshop支付过程中,有些是没有微信支付的,需要自己添加微信支付的模块,那么怎么添加呢,添加过程需要调试,本人花了很长时间才调试成功的pc微信扫描支付, 1,数据库添加微信支付方模块 2,后台设置 ...

  7. Linux mint启用内核转储

    1.查看当前是否启动了内核转储: star@sky:~$ ulimit -c unlimited 2.如果上面显示为0,即没有开启,那么,直接执行 ulimit -c unlimited 就好了. 3 ...

  8. PC端实现浏览器点击分享到QQ好友,空间,微信,微博等

    网上现在比较流行的是JIaThis,但是测试的时候,不能分享给QQ好友,一直卡在输入验证码,以下代码亲测有效,可直接使用 <%@ page language="java" c ...

  9. CSS文字,文本,背景,盒模型等记录

    文字: font-family:" "; /*设置字体*/ font-size:6px;/*设置文字字号*/ color:red;/*设置文字颜色*/ font-weight:bo ...

  10. ubuntu16.04安装mysql数据库

    安装 sudo apt-get install mysql-server(安装过程中按提示设置root密码) sudo apt-get install mysql-client sudo apt-ge ...