多线程

一.线程

1.1进程

进程就是正在运行中的程序(存在内存中)

  • 是系统执行资源分配和调度的独立单位
  • 每一进程都有属于自己的存储空间和系统资源

1.2线程

线程就是进程中的单个控制流,单个执行路径

  • 单线程:一个进程中包含一个顺序控制流(一条执行路径)
  • 多线程:一个进程中包含多个顺序控制流(多条执行路径)
  • 多线程可以提高程序的处理效率

二.多线程

2.1多线程概念

多线程是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,静儿提升整体处理性能。具有这种能力的系统包括对陈多处理机、多核心处理器以及芯片级多出力或者同时多线程处理器。在一个程序中,这些独立运行的程序片段叫做“”线程,利用它编程的概念就叫做“多线程处理”。

2.2多线程优缺点

优点:

(1)用户界面可以在进行其他工作的同时CPU一直处于活动状态,可以让程序运行速度更快。

(2)占用大量处理时间的惹怒可以定期讲处理器时间让给其他任务,可以提高CPU利用率

缺点:

(1)等候使用共享资源造成程序的运行速度变慢。这些共享资源主要是独占性的资源,如打印机等,

(2)对线程进行管理要求额外的CPU开销,线程的使用会给系统带来上下文的额外负担。

(3)线程的死锁,即对共享资源加锁实现同步的过程中可能会死锁。

2.3线程的创建方式

JavaJDK中封装了线程类Thread,只需要创建这类的对象就可以创建一个线程。Thread是程序中的执行线程。Java虚拟机允许应用程序并发的运行多个执行线程。

创建线程的两种方式

1.定义一个类将这类说明声明为Thread的子类(继承自Thread类型),重写Thread中的run方法。启动当前类的实例。

@Overridepublic void run(){//在这里书写这个线程需要执行的业务逻辑for(int i = 0; i <= 10;i++){System.out.println("输出结果"+i);}}
}

启动这个线程,需要一个“入口”,Java程序只有一个入口函数—main方法

public class Main {public static void main(String[] args) {//main方法也相当于自定义线程的run方法,且每个主函数都成为主线程。一个项目只有一个主线程//可以在这里启动自己创建的线程类//创建定义的MyThread的对象MyThread mt = new MyThread();//调用start方法mt.start();}
}

结果:

2.定义一个类实现Runnable接口,并覆盖run方法,需要通过Thread类的实例化传递当前这个类的对象,最后启动创建的Thread类的实例。

创建一个类实现Runnable接口,并且覆盖其中的

/*** 这个类是runnable接口的实现类,不是线程类*/public class MyRunnable implements Runnable{@Overridepublic void run(){//用来书写当前启动的线程中需要执行的逻辑for (int i = 0; i < 10; i++){System.out.println("我是runnale实现的线程"+i);}}}

在主类中创建线程对象,并将runnable的实现类对象传递到线程对象中,得到一个线程对象

public class RunnableMain {public static void main(String[] args) {//1.需要创建Runnable实现类的对象MyRunnable  mr=  new MyRunnable();//2.创建一个线程对象,并将Runnable对象传递到Thread对象Thread r = new Thread(mr);//3.使用线程类的start方法启动线程r.start();}
}

结果:

java多线程及创建线程相关推荐

  1. java多线程 一:创建线程与实现多线程

    文章出处:https://www.jianshu.com/p/ba24b782d5ca 文章对应视频出处:https://developer.aliyun.com/course/1012?spm=51 ...

  2. Java 并发 多线程:创建线程的四种方式

    Java 并发 多线程: 创建线程的四种方式 继承 Thread 类并重写 run 方法 实现 Runnable 接口 实现 Callable 接口 使用线程池的方式创建 1. 通过继承 Thread ...

  3. Java多线程系列--“JUC线程池”06之 Callable和Future

    转载自  Java多线程系列--"JUC线程池"06之 Callable和Future Callable 和 Future 简介 Callable 和 Future 是比较有趣的一 ...

  4. Java多线程之守护线程实战

    转载自 Java多线程之<<守护线程>>实战 定义 什么是守护线程?与守护线程相对应的就是用户线程,守护线程就是守护用户线程,当用户线程全部执行完结束之后,守护线程才会跟着结束 ...

  5. Java多线程学习(二)---线程创建方式

    线程创建方式 摘要: 1. 通过继承Thread类来创建并启动多线程的方式 2. 通过实现Runnable接口来创建并启动线程的方式 3. 通过实现Callable接口来创建并启动线程的方式 4. 总 ...

  6. java singleton 多线程_Java创建线程安全的单例singleton

    Java创建线程安全的单例 单例的使用场景 JVM中仅需要一个实例,因此能节省内存,加快访问速度,比如数据库连接池,计数器等.Spring 中的Bean,默认也是单例的,共享资源的访问,比如日志文件, ...

  7. Java多线程1(线程创建)

    一 线程与进程 什么是进程? 电脑中时会有很多单独运行的程序,每个程序有一个独立的进程,而进程之间是相互独立存在的.比如下图中的QQ.酷狗播放器.电脑管家等等.在这里插入图片描述 什么是线程? 进程想 ...

  8. Java基础教程——多线程:创建线程

    多线程 进程 每一个应用程序在运行时,都会产生至少一个进程(process). 进程是操作系统进行"资源分配和调度"的独立单位. Windows系统的"任务管理器&quo ...

  9. java 镶嵌创建线程_Java多线程——之一创建线程的四种方法

    1.实现Runnable接口,重载run(),无返回值 package thread; public class ThreadRunnable implements Runnable { public ...

  10. Java 多线程练习---创建两个子线程,每个线程交替输出“你好--来自线程***”...

    |--需求说明 |--实现思路 1.创建一个类,实现Runnable,在这个类里面重写run()方法,在run()方法里面写一个20的for循环 2.创建一个类,实例化上面的类,用这个类的对象创建线程 ...

最新文章

  1. 数学推导+纯Python实现机器学习算法:逻辑回归
  2. 20175330 数据结构-排序(选做)
  3. 【错误记录】Ubuntu 中 ROOT 用户无法启动 Visual Studio Code 开发环境 ( 推荐在普通用户下使用 VSCode 开发环境 )
  4. Wince 添加中文字库
  5. 深入理解分布式技术 - 分库分表后的唯一主键解决方案
  6. Docker Toolbox:Docker Toolbox的简介、安装、使用方法之详细攻略
  7. 跟我一起考PMP---项目时间管理
  8. 第1-10个xhtml程序
  9. java变量自增题的分解08251944
  10. go新手看的开源项目 哪些适合_最近大家都在用 Go 语言玩什么?这几个新的开源项目告诉你...
  11. Struts2学习笔记(五) Action(下)
  12. linux 挂载raid_linux下做raid
  13. Flex请求Php端的奇怪现象
  14. 几款脑力训练软件分析与推荐
  15. 简单易用的APIv3版微信支付SDK
  16. Unity游戏开发程序员学习线路图及技能提升指南
  17. 【操作系统】第三章:内存管理
  18. Mask Scoring Rcnn论文解读《Mask Scoring R-CNN》
  19. 四书《孟子》《论语》《中庸》《大学》五经《风》《雅》《颂》全文
  20. ROS中一个关于时间的函数

热门文章

  1. 基于Python实现的机器人自动走迷宫
  2. 窗口函数 OVER(PARTITION BY ...)
  3. html如何制作水滴效果图,html+css实现充电水滴融合特效代码
  4. GCC官方文档13 SSA
  5. 从搜索引擎角度看SEO
  6. 搜索关键字拼音智能提示实现
  7. termux python turtle_如何在termux上安装Python的turtle库?
  8. SQLServer 大容量导入导致死锁和系统变慢问题
  9. 团队作业9——展示博客
  10. 【随笔】小记2014年东北四省赛