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

java多线程

时间:2023-01-02 12:24:19浏览次数:45  
标签:java Thread synchronized 线程 进程 多线程 CPU

1、线程:进程想要执行任务就需要依赖线程。换句话说,就是进程中的最小执行单位就是线程,并且一个进程中至少有一个线程。
线程不能独立存在,必须依赖进程,在进程中运行每一个进程至少有一个线程,被称为主线程。
2、多线程的优缺点:
优点:
*提高界面的响应速度
*提高后台程序加载速度
*更好的利用多线程CPU资源,提高效率
缺点:
*如果线程过多,系统需要花费大量时间处理线程切换,因此处理速度会降低,CPU支持的线程越多,多线程就越有优势。
3、线程随机性:正常情况下,线程是随机的,谁先执行是不确定的,如果我们想要控制顺序,需要自己编写代码。
4、Java多线程代码编写:
(1)继承Thread,重写run方法
(2)实现Runnable,new Thread();
(3)Timer和TimerTask
(4)直接new Thread(没有任何意义,不是抽象类,可以直接拿来使用)
5、线程的生命周期:
(1)诞生(new Thread)
当创建一个Thread实例的时候,处于未启动状态。
(2)就绪
当start之后,线程就处于就绪状态,时刻准备着被CPU执行。
(3)运行
线程得到了CPU资源进行运算,但是只有一小段时间片,时间到了之后,CPU就切换到其他线程,当前线程又变为就绪状态。
(4)死亡
当run执行结束,或者中途被其他线程杀死。
*自然终止:正常运行run()方法结束后终止。
*异常终止:调用stop()等方法杀死。
(5)堵塞/阻塞
睡眠:sleep(long ms)
等待:wait();
队列:join
(6)死锁(不属于正常的生命周期)

6、线程同步
synchronized(){
this.n=n
}//锁,解决线程同步问题,加锁
*synchronized:线程同步,让线程排队
*锁:队伍中的信物,使用不同的锁,就有不同的排伍。
7、线程终极奥义:并发

8、synchronized:通过synchronized关键字来实现,所有加上synchronized和块语句,在多线程访问的时候,同一时刻只能有一个线程能够用synchronized修饰的方法或者代码块。

9、volatile:用volatile修饰的变量,线程在每次使用变量时候,都会读取变量修改后的值。

标签:java,Thread,synchronized,线程,进程,多线程,CPU
From: https://www.cnblogs.com/yiblue/p/17019704.html

相关文章

  • Java:SpringBoot整合Redis实现数据缓存
    目录结构$tree.├──pom.xml└──src├──main│├──java││└──com││└──example││......
  • 第十一章《Java实战常用类》第1节:包装类
    ​Java语言有8种基础数据类型,这些类型的数据都不是对象。有些情况下,必须用对象的形式来表示一个基础数据,例如Java语言要求存入集合的数据都必须是对象,不能是基础类型数据,因......
  • 第十一章《Java实战常用类》第2节:BigInteger类和BigDecimal类
    ​编写Java代码的过程中总是要和数字打交道。通常情况下,程序员使用Java语言所提供的int、long、float、double这些基础数据类型的变量就能存储数字。但有的时候程序中会使用......
  • 第十一章《Java实战常用类》第3节:Math类
    ​Math类位于java.lang包下,它提供了很多关于数学计算的方法,这些方法主要包括:计算三角函数的方法、计算指数和对数的方法、对数字进行舍入的方法、求随机数的方法等。这些用......
  • 第十一章《Java实战常用类》第4节:Random类
    ​在很多程序当中都要用到随机数。例如某个软件在登录时需要填写一个四位数的验证码,这个验证码就是一个典型的随机数。位于java.util包下的Random类是一个专门用于生成随机......
  • JavaScript-变量
    JavaScript变量目录JavaScript变量1.变量概述1.1什么是变量1.2变量在内存中的存储2.变量的使用3.变量语法扩展1.更新变量2.同时声明多个变量3.声明变量特殊情况4.......
  • 第十一章《Java实战常用类》第5节:UUID类
    ​有时候程序员需要用一个的字符串来给数据当作唯一标识。例如,很多大型电商系统每分钟就有可能产生上万条交易数据,如果每条数据都需要和其他数据区分开,程序员就要给每条数据......
  • java通过webdav实现文件上传
    importio.swagger.annotations.*;importorg.apache.http.HttpEntity;importorg.apache.http.auth.AuthScope;importorg.apache.http.auth.Credentials;importorg......
  • java接口了解
    packagecom.zls.demo1_接口的定义;publicinterfaceIA{//常量默认修饰符是publicstaticfinal这3个修饰符可以省略不写publicstaticfinalint......
  • 初识JavaScript-概念,注释,js输入和输出语句
    初识JavaScript目录初识JavaScript1.初识JavaScript1.1JavaScript是什么1.1JavaScript是什么1.2JavaScript的作用1.3HTML/CSS/JS的关系1.4浏览器执行JS简介......