并发与线程并发与线程的关系?并发不一定要依赖多线程 , PHP中有多进程并发 。但是Java里面的并发是多线程的 。
什么是线程?线程是比进程更轻量级的调度执行单位 。线程可以把一个进程的资源分配和执行调度分开 , 各个线程既可以共享进程资源(内存地址、文件I/O) , 又可以独立调度(线程是CPU调度的最基本单位) 。
实现线程有哪些方式?
- 使用内核线程实现
- 使用用户线程实现
- 使用用户线程+轻量级进程混合实现
Java线程调度什么是线程调度?线程调度是系统为线程分配处理器使用权的过程 。
线程调度有哪些方法?
- 协同式线程调度:实现简单 , 没有线程同步的问题 。但是线程执行时间不可控 , 容易系统崩溃 。
- 抢占式线程调度:每个线程由系统来分配执行时间 , 不会有线程导致整个进程阻塞的问题 。
但是并不能完全依靠线程优先级 。因为Java的线程是被映射到系统的原生线程上 , 所以线程调度最终还是由操作系统说了算 。如Windows中只有7种优先级 , 所以Java不得不出现几个优先级相同的情况 。同时优先级可能会被系统自行改变 。Windows系统中存在一个“优先级推进器” , 当系统发现一个线程执行特别勤奋 , 可能会越过线程优先级为它分配执行时间 。
线程安全的定义?当多个线程访问一个对象时 , 如果不用考虑这些线程在运行时环境下的调度和交替执行 , 也不需要进行额外的同步 , 或者在调用方法进行任何其他的协调操作 , 调用这个对象的行为都可以获得正确的结果 , 那这个对象就是线程安全的 。
Java语言操作的共享数据 , 包括哪些?
- 不可变
- 绝对线程安全
- 相对线程安全
- 线程兼容
- 线程对立
如何实现线程安全?虚拟机提供了同步和锁机制 。
- 阻塞同步(互斥同步)
- 非阻塞同步
- 如果这个对象没有锁定 , 或者当前线程已经拥有了这个对象的锁 , 把锁的计数器+1;当执行monitorexit指令时将锁计数器-1 。当计数器为0时 , 锁就被释放了 。
经验总结扩展阅读
- 2023年9月15日适合入宅吗 2023年9月15日入宅黄道吉日
- 2023年农历八月初一宜祭祖吗 2023年9月15日祭祖黄道吉日
- JVM学习笔记——垃圾回收篇
- 2023年1月27日取蜂蜜行吗 2023年1月27日适合取蜂蜜吗
- 2023年农历正月初六安装房门吉日 2023年1月27日是安装房门的黄道吉日吗
- 2023年1月27日举办成人仪式行吗 2023年1月27日举办成人仪式吉日一览表
- 银手镯变黑是生病了吗?
- 九州缥缈录铁皇结局是什么?
- 向前是什么电视剧的男主角?
- 长脸型适合什么样的眼镜?