Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > Java基础相关 >

Java的多线程与同步问题 PDF 下载


分享到:
时间:2021-02-21 09:58来源:http://www.java1234.com 作者:转载  侵权举报
Java的多线程与同步问题 PDF 下载
失效链接处理
Java的多线程与同步问题 PDF 下载


 
本站整理下载:
提取码:rl2y 
 
 
相关截图:
 
主要内容:


java程序运行原理:
Java命令会启动java虚拟机,启动JVM,等于启动了一个应用程序,也就是启动了一个进程,该进程会自动启动一个“主线程”,然后主线程去调用某个类的main方法。所以main方法运行在主线程中,在此之前的所有程序都是单线程的。
jvm虚拟机的启动是多线程的,原因是垃圾回收线程也要启动,否则很容易出现内存溢出。
线程是依赖进程而存在的,所以我们应该先创建一个进程。而进程是由系统创建的,所以我们应该调用系统功能创建一个进程。Java是不能直接调用系统功能的,所以我们没有办法直接实现多线程程序。但是Java可以调用c/c++写好的程序来实现多线程程序,Java提供了一些类供我们使用。thread类有两种方式实现多线程。
方法1:继承thread类
步骤:a自定义类继承thread类
      b自定义类里面重写run()方法(不是所有代码都需要被线程执行,而run方法中包含的是被线程执行的代码(一般是比较耗时的代码))
      c创建对象
      d启动线程
Run()和start()的区别:
Run():仅仅是封装被线程执行的代码,直接调用是普通方法
Start():首先启动线程,然后再由jvm调用该线程的run()方法。
Public static thread currentThread():返回当前正在执行的线程对象。
线程调度的两种调度模型:
分时调度模型:所有线程轮流使用CPU的使用权,平均分配每个线程占用CPU的时间片
 
抢占式调度模型:优先让优先级高的线程使用CPU,如果线程的优先级相同,那么会随机选择一个。Java使用的是抢占式调度模型。
注意:
   线程默认优先级为5
   线程优先级的范围是:1-10
   线程优先级高仅仅表示线程获取CPU时间片的概率高,但是要次数比较多,或多运行才能看到比较好的效果。
Public static void yield():暂停当前执行的线程对象,并执行其他线程
Public void join():等待这个线程的死亡
Public final void setDaemon(boolean on):将该线程标记为守护线程或用户线程。当正在运行的线程都是守护线程时,java虚拟机退出,该方法必须在启动线程前调用。
Public void interrupt():中断线程。把线程的状态终止,并抛出一个InterruptException。
线程的生命周期:

 

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐