美文网首页面试题
身为JAVA工作者必须了解的实战知识(八)

身为JAVA工作者必须了解的实战知识(八)

作者: a_decb | 来源:发表于2017-08-29 19:18 被阅读14次

    一、为什么GUI是单线程化

    传统的GUI应用程序通常都是单线程的。

    1. 在代码的各个位置都需要调用poll方法来获得输入事件(这种方式将给代码带来极大的混乱)

    2. 通过一个“主事件循环(Main Event Loop)”来间接地执行应用程序的所有代码。

    如果在主事件循环中调用的代码需要很长时间才能执行完成,那么用户界面就会“冻结”,直到代码执行完成。这是因为只有当执行控制权返回到主事件循环后,才能处理后续的用户界面事件。

    很多尝试多线程的GUI框架的努力,最总都因为静态条件和死锁导致的稳定性问题,又回到单线程的时间队列模型的老路上。

    1. 顺序事件处理

    因为只有唯一的线程在处理GUI任务,所有任务都不需要考虑并发且都是顺序执行,但是问题是如果在任务中执行时间过长,或导致后续操作无法响应。(Android会提示Andorid Not Response异常)

    2. Swing中的线程限制

    GUI的单线程规则:组件与模型只能在事件分派线程中被创建、修改和请求。

    在Andorid中如果在子线程进行创建或者更新UI操作会抛出异常。

    二、短期的GUI任务

    GUI应用程序中,事件起源于事件线程,冒泡似得传递到达应用程序提供的监听器,如果是比较简单的修改颜色等,可以直接在事件线程中处理。

    三、耗时GUI任务

    因为GUI任务有线程限制,所以需要子线程处理耗时操作,通常最后还需要在子线程进行刷新。

    1. 取消

    2. 进度与完成标识

    3. SwingWorker

    在Andorid中使用AsyncTask

    四、共享数据模型

    避免响应性的最简单的方式是初始化时一次性读取到内存中,这样需要考虑是否占用内存过多的问题。

    1. 线程安全的数据模型

    ConcurrentHashMap无法提供一致的数据快照。

    CopyOnWriteArrayList同时获得线程安全性、一致性以及良好的响应性。

    2. 分解数据模型

    如果一个数据模型必须被多个线程共享,而且由于阻塞、一致性或复杂度等原因无法实现一个线程安全的模型时,可以考虑使用分解模型设计。

    五、其他形式的单线程子系统

    一些情况下无法避免同步或者死锁问题,例如:原生库(Native Library)要求、通过System.loadLibrary加载时,都必须放在同一个线程中执行。

    将Future和newSingleThreadExecutor一起使用处理单线程可取消的任务。

    以上就是我推荐给Java开发者们的一面试经典知识。但是这些知识里面并没有太多Java全栈、Java晋阶、JAVA架构之类的题,不是我不推荐,而是希望大家更多的从基本功做起,打好基础,太多复杂的内容一会儿也说不明白。

    好了同学们,我能介绍的也都全部介绍完给你们了,如果下获得更多JAVA教学资源,可以选择来我们这里共同交流,群:240448376,很多大神在这里切磋学习,不懂可以直接问,晚上还有大牛免费直播教学。

    注:加群要求

    1、具有一定工作经验的,面对目前流行的技术不知从何下手,需要突破技术瓶颈的可以加,有些应届生和实习生也可以加。

    2、在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以加。

    3、如果没有工作经验,但基础非常扎实,对java工作机制,常用设计思想,常用java开发框架掌握熟练的,可以加。

    4、觉得自己很牛B,一般需求都能搞定。但是所学的知识点没有系统化,很难在技术领域继续突破的可以加。

    5.阿里Java高级大牛直播讲解知识点,分享知识,多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!

    PS:现在主要讲解的内容是(反射原理枚举原理与应用注解原理常用设计模式、正规表达式高级应用、JAVA操作Office原理详解JAVA图像处理技术,等多个知识点的详解和实战)

    6.小号或者小白之类加群一律不给过,谢谢。

    最后,每一位读到这里的网友,感谢你们能耐心地看完。觉得对你有帮助可以给个喜欢!希望在成为一名更优秀的Java程序员的道路上,我们可以一起学习、一起进步

    相关文章

      网友评论

        本文标题:身为JAVA工作者必须了解的实战知识(八)

        本文链接:https://www.haomeiwen.com/subject/kcdadxtx.html