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

山东省级建设主管部门网站如何做试玩类网站

山东省级建设主管部门网站,如何做试玩类网站,wordpress连接数据时出错,网站开发全过程目录 39、volatile 有什么用?能否用一句话说明下 volatile 的应用场景? 40、为什么代码会重排序? 41、在 java 中 wait 和 sleep 方法的不同? 42、用 Java 实现阻塞队列 43、一个线程运行时发生异常会怎样? 44、…

目录

39、volatile 有什么用?能否用一句话说明下 volatile 的应用场景?

40、为什么代码会重排序?

41、在 java 中 wait 和 sleep 方法的不同?

42、用 Java 实现阻塞队列

43、一个线程运行时发生异常会怎样?

44、如何在两个线程间共享数据?

45、Java 中 notify 和 notifyAll 有什么区别?

46、为什么 wait, notify 和 notifyAll 这些方法不在 thread类里面?

47、什么是 ThreadLocal 变量?

48、Java 中 interrupted 和 isInterrupted 方法的区别?

49、为什么 wait 和 notify 方法要在同步块中调用?

50、为什么你应该在循环中检查等待条件?

51、Java 中的同步集合与并发集合有什么区别?


39、volatile 有什么用?能否用一句话说明下 volatile 的应用场景?

volatile 保证内存可见性和禁止指令重排。

volatile 用于多线程环境下的单次操作(单次读或者单次写)。


40、为什么代码会重排序?

在执行程序时,为了提供性能,处理器和编译器常常会对指令进行重排序,但是不能随意重排序,不是你想怎么排序就怎么排序,它需要满足以下两个条件:

在单线程环境下不能改变程序运行的结果;

存在数据依赖关系的不允许重排序

需要注意的是:重排序不会影响单线程环境的执行结果,但是会破坏多线程的执行语义。


41、在 java 中 wait 和 sleep 方法的不同?

最大的不同是在等待时 wait 会释放锁,而 sleep 一直持有锁。Wait 通常被用于线程间交互,sleep 通常被用于暂停执行。

直接了解的深入一点吧:

在 Java 中线程的状态一共被分成 6 种:

初始态:NEW

创建一个 Thread 对象,但还未调用 start()启动线程时,线程处于初始态。

运行态:RUNNABLE

在 Java 中,运行态包括就绪态 和 运行态

就绪态 该状态下的线程已经获得执行所需的所有资源,只要 CPU 分配执行权就能运行。所有就绪态的线程存放在就绪队列中。

运行态 获得 CPU 执行权,正在执行的线程。由于一个 CPU 同一时刻只能执行一条线程,因此每个 CPU 每个时刻只有一条运行态的线程。

阻塞态

当一条正在执行的线程请求某一资源失败时,就会进入阻塞态。而在 Java 中,阻塞态专指请求锁失败时进入的状态。由一个阻塞队列存放所有阻塞态的线程。处于阻塞态的线程会不断请求资源,一旦请求成功,就会进入就绪队列,等待执行。

PS:锁、IO、Socket 等都资源。

等待态

当前线程中调用 wait、join、park 函数时,当前线程就会进入等待态。也有一个等待队列存放所有等待态的线程。线程处于等待态表示它需要等待其他线程的指示才能继续运行。进入等待态的线程会释放 CPU 执行权,并释放资源(如:锁)

超时等待态

当运行中的线程调用 sleep(time)、wait、join、parkNanos、parkUntil 时,就会进入该状态;它和等待态一样,并不是因为请求不到资源,而是主动进入,并且进入后需要其他线程唤醒;进入该状态后释放 CPU 执行权 和 占有的资源。与等待态的区别:到了超时时间后自动进入阻塞队列,开始竞争锁。

终止态

线程执行结束后的状态。

注意:

wait()方法会释放 CPU 执行权 和 占有的锁。

sleep(long)方法仅释放 CPU 使用权,锁仍然占用;线程被放入超时等待队列,与

yield 相比,它会使线程较长时间得不到运行。

yield()方法仅释放 CPU 执行权,锁仍然占用,线程会被放入就绪队列,会在短时间内再次执行。

wait 和 notify 必须配套使用,即必须使用同一把锁调用;

wait 和 notify 必须放在一个同步块中调用 wait 和 notify 的对象必须是他们所处同步块的锁对象。


42、用 Java 实现阻塞队列

参考 java 中的阻塞队列的内容吧,直接实现有点烦:

http://www.infoq.com/cn/articles/java-blocking-queue


43、一个线程运行时发生异常会怎样?

如果异常没有被捕获该线程将会停止执行。Thread.UncaughtExceptionHandler是用于处理未捕获异常造成线程突然中断情况的一个内嵌接口。当一个未捕获异常将造成线程中断的时候 JVM 会使用 Thread.getUncaughtExceptionHandler()来查询线程的 UncaughtExceptionHandler 并将线程和异常作为参数传递给handler 的 uncaughtException()方法进行处理。


44、如何在两个线程间共享数据?

在两个线程间共享变量即可实现共享。

一般来说,共享变量要求变量本身是线程安全的,然后在线程内使用的时候,如果有对共享变量的复合操作,那么也得保证复合操作的线程安全性。


45、Java 中 notify 和 notifyAll 有什么区别?

notify() 方法不能唤醒某个具体的线程,所以只有一个线程在等待的时候它才有用武之地。而 notifyAll()唤醒所有线程并允许他们争夺锁确保了至少有一个线程能继续运行。


46、为什么 wait, notify 和 notifyAll 这些方法不在 thread类里面?

一个很明显的原因是 JAVA 提供的锁是对象级的而不是线程级的,每个对象都有锁,通过线程获得。由于 wait,notify 和 notifyAll 都是锁级别的操作,所以把他们定义在 Object 类中因为锁属于对象。


47、什么是 ThreadLocal 变量?

ThreadLocal 是 Java 里一种特殊的变量。每个线程都有一个 ThreadLocal 就是每个线程都拥有了自己独立的一个变量,竞争条件被彻底消除了。它是为创建代价高昂的对象获取线程安全的好方法,比如你可以用 ThreadLocal 让SimpleDateFormat 变成线程安全的,因为那个类创建代价高昂且每次调用都需要创建不同的实例所以不值得在局部范围使用它,如果为每个线程提供一个自己独有的变量拷贝,将大大提高效率。首先,通过复用减少了代价高昂的对象的创建个数。其次,你在没有使用高代价的同步或者不变性的情况下获得了线程安全。


48、Java 中 interrupted 和 isInterrupted 方法的区别?

interrupt

interrupt 方法用于中断线程。调用该方法的线程的状态为将被置为”中断”状态。

注意:线程中断仅仅是置线程的中断状态位,不会停止线程。需要用户自己去监视线程的状态为并做处理。支持线程中断的方法(也就是线程中断后会抛出interruptedException 的方法)就是在监视线程的中断状态,一旦线程的中断状态被置为“中断状态”,就会抛出中断异常。

interrupted

查询当前线程的中断状态,并且清除原状态。如果一个线程被中断了,第一次调用 interrupted 则返回 true,第二次和后面的就返回 false 了。

isInterrupted

仅仅是查询当前线程的中断状态


49、为什么 wait 和 notify 方法要在同步块中调用?

Java API 强制要求这样做,如果你不这么做,你的代码会抛出IllegalMonitorStateException 异常。还有一个原因是为了避免 wait 和 notify之间产生竞态条件。


50、为什么你应该在循环中检查等待条件?

处于等待状态的线程可能会收到错误警报和伪唤醒,如果不在循环中检查等待条件,程序就会在没有满足结束条件的情况下退出。


51、Java 中的同步集合与并发集合有什么区别?

同步集合与并发集合都为多线程和并发提供了合适的线程安全的集合,不过并发集合的可扩展性更高。在 Java1.5 之前程序员们只有同步集合来用且在多线程并发的时候会导致争用,阻碍了系统的扩展性。Java5 介绍了并发集合像ConcurrentHashMap,不仅提供线程安全还用锁分离和内部分区等现代技术提高了可扩展性。


要想了解更多:

千题千解·Java面试宝典_时光の尘的博客-CSDN博客

http://www.yayakq.cn/news/97468/

相关文章:

  • 猎聘招聘官方网站哪个行业该做网站但是没有做
  • 深圳网站建设公司报价单温州最新消息
  • 国内vps做网站要备案吗轻淘客网站建设
  • 网址与网站的区别阿里云编辑建设好的网站
  • 邯郸网站seo免费高清视频在线观看
  • 手机网站建设设计6微信公众号的h5网站开发6
  • 提供秦皇岛网站建设价格黄冈工程建设标准造价信息网
  • 高端网站建设软件开发手机网站关键词排名查询
  • 北京SEO网站优化公司开平 做一网站
  • 网站建设贰金手指下拉贰拾汉中网站开发
  • 易用的做网站软件ai绘画软件免费
  • 网站建设投入及费用网站这么推广
  • 如何建立自己的商城网站在本地服务器上建设网站的步骤
  • p2p金融网站建设百度竞价包年推广是怎么回事
  • 网站的站长是什么意思建设网站需要招聘哪些人
  • 网站项目建设周期广州企业建站 网络服务
  • wordpress视频站学些网站制作
  • 怎么创建免费的网站商丘专业做网站
  • 深圳优秀网站建设公司房九九西安房产网
  • 江苏省建设信息网站APP做网站
  • metropro wordpressseo引擎优化平台培训
  • 网站设计排版布局主网站怎么做熊掌号优化
  • 网站在线提交询盘系统 能直接发到邮箱京东网站的建设目的
  • python做网站还是数据库小程序应用开发
  • 肇庆网站建设方案咨询四川住房和城乡建设厅
  • wordpress什么模块无锡网站推广优化费用
  • 网站ui设计素材平面设计月薪大概多少
  • 一个vps可以建多少网站专业做灯具的网站
  • 辽宁住房和城乡建设厅网站首页平面设计和室内设计的区别
  • 网站如何解除绑定域名现在哪个电商平台比较好做