首页 > 编程语言 >Java多线程

Java多线程

时间:2022-09-22 22:25:32浏览次数:51  
标签:Java Thread 调度 Callable 线程 进程 多线程

多线程详解(Java.Thread)

线程简介

线程实现(重点)

线程状态

线程同步(重点)

线程通信问题

高级主题

多任务:现实中太多这样同时做多件事情的例子了,看起来是多个任务都在做,
其实本质上我们的大脑在同一时间依旧只做了一件事情。
多线程:
原来是一条路,慢慢因为车太多了,道路堵塞,效率极低。
为了提高使用的效率,能够充分利用道路,于是加了多个车道。
普通方法调用和多线程

程序 进程 线程
在操作系统中运行的程序就是进程,比如你的QQ,播放器,游戏,IDE等等。。。
一个进程可以有很多线程,如视频中同时听声音,看图像,看弹幕,等等。

Process与Thread

  • 说起进程,就不得不说下程序。程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。
  • 进程则是执行程序的一次执行过程,它是一个动态的概念。是系统资源分配的单位
  • 通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义。线程是CPU调度和执行的单位。
    注意:很多多线程是模拟出来的,真正的多线程是指有多个CPU,即多核,如服务器。如果是模拟出来的多线程,即在一个cpu的情况下,
    在同一个时间点,cpu只能执行一个代码,因为切换的很快,所以就有同时执行的错觉。

本章核心概念

  • 线程就是独立的执行路径;
  • 在程序运行时,即使没有自己创建线程,后台也会有多个线程,如主线程,gc线程;
  • main()称之为主线程,为系统的入口,用于执行整个程序;
  • 在一个进程中,如果开辟了多个线程,线程的运行有调度器安排调度,调度器是与操作系统紧密相关的,先后顺序是不能人为干预的。
  • 对同一份资源操作时,会存在资源抢夺的问题,需要加入并发控制;
  • 线程会带来额外的开销,如cpu调度时间,并发控制开销。
  • 每个线程在自己的工作内存交互,内存控制不当会造成数据不一致

2、线程的创建方式

Thread、Runnable、Callable
三种创建方式:
1、Thread class继承Thread类(重点)
2、Runnable接口实现Runnable接口(重点)
3、Callable接口实现Callable接口(了解)

标签:Java,Thread,调度,Callable,线程,进程,多线程
From: https://www.cnblogs.com/wangzhen1991/p/16720798.html

相关文章

  • JSON和JavaScript自定义对象
    JavaScript自定义对象:var对象名称={属性名称1:属性值1,属性名称2:属性值2,...,函数名称:function(形参列表){},...}; 访问对象:对象名称.属性名称......
  • Java generic cheatsheet(jrebel.com)
    摘自https://www.jrebel.com/blog/java-generics-cheat-sheetpdf版https://www.jrebel.com/system/files/java-generics-cheat-sheet.pdf  December1,2016Jav......
  • JavaScript基础知识
    ##输出语句*1.window.alert()--写入警告框*2.document.write()---写入HTML输出*3.console.log()---写入浏览器控制台*alert("helloworld!");//写入警告框document......
  • java static
    有无static变量的区别  有static的变量1.在创建类时生成变量的存储空间2.在所有对象中的存储空间相同,值是相通的。3. 无static的变量1.存储空间在对象生成时生......
  • JavaScript
    行为也是严格区分大小写的,可以在控制台console.log打印输出的东西1.什么是JavaScript?是一门世界上最流行的脚本语言2.引用script里面的注释用// alert("......
  • Java集合类思想(一)
    Java集合类思想(一)一、集合与数组数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用。集合(只能存储对象,对象类型可......
  • 产生10个1-20以内的随机数,要求不能重复(集合)Java
    publicclassDemo{ //产生10个1-20以内的随机数,要求不能重复 publicstaticvoidmain(String[]args){ //新建集合存放随机数 Set<Integer>set=newHashSet<>()......
  • java: Strategy Patterns
     /***版权所有2022涂聚文有限公司*许可信息查看:*描述:*策略模式StrategyPatterns*历史版本:JDK14.02*2022-09-12创建者geovindu*2022-09-12......
  • Java Map倒序排列
    publicstaticvoidmain(String[]args){Map<String,List<String>>map=newLinkedHashMap<>();//倒序遍历ListIterator<Map.Entry<......
  • 打印三位数的水仙花数Java
    publicclassFlower{//水仙花数就是一个个位数的立方+十位数的立方+百位数的立方=这个三位数//153=1*1*1+5*5*5+3*3*3 publicstaticvoidmain(String[]args){ ......