当前位置: 首页 > wzjs >正文

光谷企业网站建设牛推网络

光谷企业网站建设,牛推网络,高端自适应网站建设,韵达客服外包平台并发多线程 1.Java里面的线程和操作系统的线程一样吗?2.Java的线程安全在三个方面体现:3.保证数据一致性的方案4.线程创建的方式1)Thread类2)Runnable接口3)Callable接口和FutureTask4)线程池(e…

并发多线程

  • 1.Java里面的线程和操作系统的线程一样吗?
  • 2.Java的线程安全在三个方面体现:
  • 3.保证数据一致性的方案
  • 4.线程创建的方式
    • 1)Thread类
    • 2)Runnable接口
    • 3)Callable接口和FutureTask
    • 4)线程池(executor框架)
  • 5.启动一个线程
  • 6.停止一个线程
  • 7.Java线程的状态有哪些
  • 8.sleep()和wait()的区别
  • 9.BLOCKED和WAITING的区别
  • 10.WAITING进入RUNNABLE的核心机制
  • 11.不同的线程之间如何通信
    • 1)修改共享变量
    • 2)等待通知机制
    • 3)同步辅助类
    • 4)计数信号量
  • 12.停止一个线程
  • 13.参考

1.Java里面的线程和操作系统的线程一样吗?

  • Java程序创建的线程和操作系统的线程是一对一的,java底层会调用pthread_create来创建线程。

2.Java的线程安全在三个方面体现:

  • 原子性:要么所有操作一起成功执行,要么一起失败回滚(atomic包,synchronized关键字)。
  • 可见性:保证线程对内存的修改可以及时被其他线程看见(synchronized关键字,volatile关键字)。
  • 有序性:指程序执行顺序符合预期,不会因为指令重排序后导致的乱序而出现错误(happens-before原则)。

3.保证数据一致性的方案

  • 事务管理ACID
  • 锁机制(synchronized、ReentrantLock)
  • CAS乐观锁

4.线程创建的方式

1)Thread类

  • 继承Thread类,重写run(。
  • 优点:编程简单,访问当前线程无需使用Thread.currentThread(), 直接使用this即可获取当前线程。
  • 缺点:继承了Thread类就不能继承其他父类。

2)Runnable接口

  • 实现Runnable接口,重写run(),然后将runnable对象作为参数传递给Thread类的构造器;
  • 优点:
    • 还可以继承其他类。
    • 多个线程共享同一个目标对象,适合多个相同线程来处理同一份资源的情况;
  • 缺点:编程稍复杂,访问当前对象需使用Thread.currentThread()方法。

3)Callable接口和FutureTask

  • Callable接口类相较于Runnable,其有call()方法可以有返回值并且可以抛出异常。执行callable任务,需将它包装进一个FutureTask,因为Thread类的构造器只接收Runnable参数,而FutureTask实现了Runnable接口。
  • 缺点:编程复杂,访问当前线程需调用Thread.currentThread()。
  • 优点:
    • 可以继承其他类。
    • 可以多个线程共享一个target对象,非常适合多线程处理同一份资源的情形。

4)线程池(executor框架)

  • 可以使用executors类的静态方法创建不同类型的线程池。
  • 缺点:线程池增加了程序的复杂度。
  • 优点:
    • 线程重用,降低资源消耗。
    • 提高响应速度,因为线程池的线程是预先创建好的。
    • 提高系统稳定性,因为线程池可以限制并发线程数量。
    • 支持任务队列存储待执行的任务,避免任务丢失。

5.启动一个线程

  • start(),线程会进入就绪状态。

6.停止一个线程

  • interrupt()修改中断状态标志位为true,run()中判断当前程序状态,中断状态就抛出InterruptedException异常。
  • stop(),已弃用,清理工作不到位。
  • return停止线程,interrupt()修改中断状态标志位为true后,run()中判断当前程序状态,中断状态就return。

7.Java线程的状态有哪些

  • 可以调用Thread中的getState()方法获取当前线程状态;
  • NEW:初始化状态;
  • RUNNABLE:就绪状态;
  • BLOCKED:阻塞状态,一般是获取锁的时候进行阻塞;
  • WAITING:无时限等待状态,一般是调用了wait()方法之后进行阻塞,正在等待另一个线程执行某些操作(如:notify());
  • TIME_WAITING:有时限等待状态,一般是调用了sleep()方法后进行阻塞;
  • TERMINATED:终止状态。

8.sleep()和wait()的区别

  • 分类不同,sleep()是Thread类的静态方法,wait()是Object类的实例方法,wait()必须通过对象来调用;
  • sleep()线程不会释放持有的对象锁,但会主动让出CPU时间片,时间结束自动进入就绪状态,wait()线程会释放持有的对象锁,直到被其他线程调用相同对象的notify()唤醒;
  • sleep()可以在任意位置调用,无需事先获取锁。Wait()必须在synchronized 代码块内调用,即要求线程需持有该对象的锁,否则抛出异常IllegalMonitorStateException

9.BLOCKED和WAITING的区别

  • BLOCKED是锁竞争失败后被动触发的状态;WAITING是人为的主动触发的状态。
  • BLOCKED的唤醒是其他线程释放锁后自动触发的,WAITING必须通过特定方法来主动唤醒。

10.WAITING进入RUNNABLE的核心机制

  • 外部事件触发
  • 资源可用性变化

11.不同的线程之间如何通信

1)修改共享变量

  • volatile关键字用于保证变量的可见性。当一个变量被声明为volatile时,它会保证该变量的写操作会立即刷新到主内存中,而读操作会从主内存中读取最新的值。

2)等待通知机制

  • Object类下的wait(),notify(),notifyAll();
  • LockSupport类下的park(),unpark()方法,唤醒指定线程;
  • Condition类下的await(),signal(),signalAll();
    • ReentrantLock是Lock接口的一个实现类,condition通过lock.newCondition()方法创建;
    • 可以创建多个等待集(存的是等待唤醒的对象),如:生产者、消费者,这样可以实现生产者消费者互相唤醒。
import java.util.concurrent.locks.Condition; 
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
class LockConditionExample {private static final Lock lock = new ReentrantLock();private static final Condition condition = lock.newCondition();public static void main(String[] args) {......}
}

3)同步辅助类

4)计数信号量

12.停止一个线程

  • 通过共享标志位主动终止(volatile关键字);
  • 中断机制(Thread.interrupt());
  • 线程池的Future.cancel()停止线程(任务需通过线程池提交,且依赖中断机制);
  • 不可中断,则关闭资源。

13.参考

https://www.xiaolincoding.com/interview/juc.html#%E5%A4%9A%E7%BA%BF%E7%A8%8B

http://www.dtcms.com/wzjs/394777.html

相关文章:

  • 衡水微信网站建设seo怎么优化简述
  • 新闻发布会策划流程外贸网站建设优化
  • 网站建设欧美中国电信视频app下载
  • 泉州网站建设费用互联网推广话术
  • 自己做网站的服务器如何制作视频网站
  • 招投标网站官网衡阳seo快速排名
  • 系网站建设工作总结seo咨询邵阳
  • 百度网站快速排名公司南京seo优化培训
  • 电商网站开发的意义口碑营销的优势有哪些
  • 宿迁企业网站建设seo是什么
  • 古典asp网站源码搜索软件使用排名
  • 庞各庄网站建设优就业seo课程学多久
  • 备案的博客网站可以做别的吗长沙市最新疫情
  • swf格式网站链接怎样做seo关键词优化推荐
  • 德州网站建设德州必应搜索引擎入口官网
  • 做网站的支付网站托管代运营
  • 浙江省建设厅信息中心网站西安网站建设制作公司
  • 做数码后期上数码网站百度关键词优化工具
  • 设计师联盟重庆企业站seo
  • 有什么网站可以免费做图seo资料网
  • 作风建设 宣讲家网站seo网站推广计划
  • 做网站应该会什么问题深圳推广公司有哪些
  • 网站如何投放广告国外免费推广网站有哪些
  • 用什么做网站更快捷方便百度指数的主要功能有
  • 有哪些可以做调查的网站免费推广的渠道有哪些
  • 网站保姆-源码下载域名批量注册查询
  • 常设中国建设工程法律论坛网站广东企业网站seo哪里好
  • 采集wordpress整站数据郑州关键词排名顾问
  • 小程序就是做网站网络媒体推广产品
  • 广东两学一做考试网站搜索引擎哪个最好用