java多线程技术,学习java必须要会的编程技术

一个程序是由多个程组成的,java虚拟机也是一样的,举个例子来说,它不仅有java运行线程,还有垃圾回收线程,所以它也是多线程的运行,多线程在我们程序开发中是必不可少的,另外线程和进程不是一个概念,简单理解就是一个进程由多干个线程组成的。点击链接加入群聊【java《学习》+交流】:https://jq.qq.com/?_wv=1027&k=576rHs4   java《学习》+交流 523401738

并行和并发的区别?

并行:多个cpu实例或者多台机器同时执行一段处理逻辑,这是真正的同时,就是同时进行的。

并发:通过cpu调度算法,让用户看上去同时执行,实际上从cpu操作层面不是真正的同时。

这两个区别必须要注意区别,能一概而论。


同步

同步:当多个线程操作共享数据的时候,Java中的同步指的是通过人为的控制和调度,保证共享资源的多线程访问成为线程安全,来保证结果的准确,线程安全的优先级高于性能,线程不安全的话,性能再好也没有任何意义。

线程的各种状态


当线程start();之后线程就开始运行了,注意不是run(),当他wait(),或者sleep()的时候他就冻结了,此时释放锁,然后当他从冻结状态恢复过来的时候,他的状态不会是运行,而是堵塞状态,等待着CPU的掉用。

各种运行状态概览

  1. 调用join()和sleep()方法,sleep()时间结束或被打断,join()中断,IO完成都会回到Runnable状态,等待JVM的调度。

  2. 调用wait(),使该线程处于等待池,直到notify()/notifyAll(),线程被唤醒被放到锁定池,释放同步锁使线程回到可运行状态(

  3. 对Running状态的线程加同步锁使其进入,同步锁被释放进入可运行状态。

此外,在runnable状态的线程是处于被调度的线程,此时的调度顺序是不一定的。同步在多个线程操作一个共享数据的时候使用。


华为终端互联网

猜你喜欢

转载自blog.csdn.net/qq_41781067/article/details/79873559
今日推荐