本文主要介绍“Java多线程的概念知识点有哪些”。在日常操作中,相信很多人对Java多线程的概念知识点有什么疑惑。边肖查阅了各种资料,整理出简单易用的操作方法,希望能帮助大家解答“Java多线程的概念知识点有哪些”的疑惑!接下来,请和边肖一起学习!
00-1010数据一致性通过锁定来保证。也就是说,当一个线程访问某个数据时,数据受到锁定操作的保护,其他线程在锁定过程中无法访问。
线程安全:
当多个线程访问共享变量时,需要锁定以确保数据同步,这增加了程序的复杂性。避免数据同步的一种方法是不共享变量,例如使用局部变量和ThreadLocal。
00-1010系统为线程分配CUP使用权的过程
协作线程调度
线程的执行时间由线程本身控制。当它完成自己的执行时,它主动通知操作系统切换到另一个线程执行。优点是实现简单,线程可以知道自己的操作,不存在线程同步问题。缺点是线程的执行时间是不可控的,如果一个线程有问题,它可能会一直被阻塞在那里。
抢先线程调度
每个线程的执行时间都是由操作系统分配的,线程的切换不是由线程本身决定的(在Java中,Thread.yield()可以放弃执行时间,但不能得到执行时间)。线程的执行时间可以由系统控制,没有线程会导致进程阻塞。
00-1010可以设置线程的优先级,这样一些线程可以先尽可能多地执行多个执行(Java中有10个线程的优先级来自Thread。线程的最小优先级。MAX_PRIORITY)。当两个线程同时就绪时,优先级越高,执行起来就越容易。但是,优先级并不可靠,因为Java线程是通过映射到本机线程来实现的,所以线程调度仍然依赖于操作系统。
00-1010创建一个尚未启动的新线程。
可运行):可运行包括操作系统中的运行和就绪。处于这种状态的线程可能正在运行,或者正在等待中央处理器为其分配执行时间。线程创建后,其他线程调用该线程的start方法,所以线程在可运行线程池中,变得可运行,只是CPU分配执行时间,已经获得运行所需的其他资源。
等待):无限期(:)处于这种状态的线程不会被分配CPU执行时间,而是等待被其他线程显示和唤醒。例如,不设置超时的Object.wait()方法和Thread.join()方法,以及LockSupport.park()方法。
定时等待):)处于这种状态的线程不会被分配CPU执行时间,但会在一定时间后被系统自动唤醒。例如,设置了超时的Thread.sleep()、Object.wait()和thread.join()、lock support . park nano()和lock support . park直至()。
阻塞):线程被阻塞。与等待的区别在于,阻塞线程正在等待一个排他锁。
阻塞状态是指由于某种原因放弃使用CPU的权利,暂时停止执行,直到线程进入就绪状态,这样才有机会转入运行状态。
已终止):线程完成执行或异常退出run()方法,线程结束其生命周期。
00-1010 1.等待阻塞(无限期等待):运行的线程执行wait()方法,释放占用的资源,JVM将线程放入等待池。进入此状态后,线程不会自动唤醒,只有在其他线程调用notify()或notifyAll()方法时才会唤醒。
2.在同步阻塞:中运行的线程获取对象的同步锁时,如果同步锁被其他线程占用,JVM会将该线程放入锁池。3.在阻塞(限时等待)3360中运行的其他线程已经执行了join()或sleep()方法,或者发起了I/O请求,JVM会将该线程置于阻塞状态。当睡眠()状态超时时。
至此,“Java多线程概念的知识点有哪些”的学习就结束了,希望能解决大家的疑惑。理论和实践的结合可以帮助你学得更好。去试试吧!如果你想继续学习更多的相关知识,请继续关注网站,边肖会继续努力,给大家带来更多实用的文章!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/115171.html