温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java多线程知识点有哪些

发布时间:2021-11-16 09:39:46 来源:亿速云 阅读:112 作者:iii 栏目:大数据

这篇文章主要讲解了“java多线程知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java多线程知识点有哪些”吧!

1 并发执行

应用程序可以同时运行(一边听歌,一边玩游戏)。 在应用程序中,不同的程序块也是可以同时运行,这种多个程序块同时运行的现象被称为 并发执行。 【在多任务操作系统中,表面上是支持并发执行的,所有的应用程序都是由CPU执行的,对于一个CPU而言,在某个时间点只能运行一个程序。由于CPU运行很快,感觉是并发执行的】

2 进程

在一个操作系统中,每个独立执行的程序都可称为一个进程。

3 线程 在一个进程中还可以有多个执行单元同时运行。这些执行单元可以看作程序的一条条线索,被称为线程。 【当一个java程序启动时,就会产生一个进程,该进程会默认创建一个线程,在这个线程上会运行main()方法中的代码】

4 多线程程序

多段代码交替运行。 【看似是同时执行,其实和进程一样,由CPU轮流执行。】

5 线程的创建

1.继承Thread类 2.实现Runnable接口

6 后台线程

setDaemon(true)

新创建的线程默认都是前台线程。 【只要有一个前台线程在运行,这个进程就不会结束,如果一个进程只有后台线程运行,这个进程就会结束】

**7 线程的生命周期及状态转换 **

在Java中,任何对象都有生命周期,线程也不例外。 线程整个生命周期分为5个阶段: java多线程知识点有哪些

8 线程的调度 JVM会按照特定的机制为程序中的每个线程分配CPU的使用权。这种机制被称为线程的调度。 在计算机中,线程调度有两种模型: 1.分时调度模型 2.抢占式调度模型 JVM默认采用抢占式调度模型,大多数情况下程序员不需要去关心它。

8.1 线程的优先级

线程的优先级用1~10之间的正数表示,数字越大优先级越高。 [处于就绪状态的每个线程都有自己的优先级] main线程具有普通优先级。(5) 【可以通过Thread类的setPriority方法对其进行设置】 

8.2 线程休眠

sleep(long millis)

使正在执行的线程暂停,将CPU让给别的线程。这是可以使用静态方法sleep.(该方法让当前正在执行的线程暂停一段时间,进入休眠等待状态。) sleep方法声明抛出InterruptedException异常。因此在调用该方法时应该捕获异常。 注意:sleep时静态方法,只能控制当前正在运行的线程休眠。而不能控制其他线程休眠。 

8.3 线程让步

yield()

和sleep类似,区别在于yield方法不会阻塞该线程。只是将线程转换成就绪状态。让系统的调度器重新调度一次。 【当某个线程调用yield()方法之后,只有与当前线程优先级相同或者更高的线程才能获得执行的机会】 

8.4 线程插队

join()

当在某个线程中调用其他线程的join()方法时,调用的线程将被阻塞,知道被join()方法加入的线程执行完后它才会继续运行。

9 多线程同步 前提:多个线程去访问同一个资源时,会引发一些安全问题。 解决:实现多线程同步,即限制某个资源在同一时刻只能被一个线程访问。 

9.1 同步代码块 Object lock = new Object(); 注意:锁对象的创建代码不能放到run()方法中。 

9.2 同步方法 被synchronized修饰的方法在某一时刻只允许一个线程访问,访问该方法的其他线程都会发生阻塞,直到当前线程访问完毕后,其他线程才有机会执行方法。

感谢各位的阅读,以上就是“java多线程知识点有哪些”的内容了,经过本文的学习后,相信大家对java多线程知识点有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI