2014.12.12笔记

来源:互联网 发布:g92车直螺纹编程实例 编辑:程序博客网 时间:2024/06/05 10:31
重温进程和线程
进程:是程序任务的执行过程,是动态性的,他是持有资源(共享内存,共享文件)和线程的载体
线程是系统中最小的执行单位,同一个进程有一个线程,线程和进程可以用班级的例子说明,我们把进程比作是一个班级,那么班级的每一个学生就是线程,学生是班级的最小单元,班级之中学生共用桌椅,板凳,黑板,那么线程是系统中最小的执行单位,同一个进程中有多个线程,线程共享进程的资源。
线程的交互:互斥和同步,来实现线程之间的交流;我们拿班级学生例子来说,学生之间需要协作才能完成一些事情,如打扫卫生,但有时这种协作是需要竞争的,比如学习,班级之中的学习资料是有限的,那么爱学习的同学要去抢占他,当一个同学在使用时,另一个同学不能使用,这个同学使用完了,另一个同学才能使用,如果一个同学正在使用,那么新来的同学只能等待别的同学使用完了在使用,另一方面他们又需要同步或协作,比如儿童节来了,全班同学需要合作排练一个节目,同学们需要通力合作,才能表现完美,这就是线程的交互。

static viod yield() 方法表示当前处理器运行线程释放处理器资源,重新去竞争处理器资源
statcic viod currentThread()它返回当前运行的处理器线程引用

volatile boolean keepRunning;//volatile 保证了线程可以正确地读取其他线程写入的值,如果不写成volatile,由于可见性的问题,当前线程有可能不能读到这个值//可见性JMM(JAVA内存模型)happens-before原则、可见性原则;

如何正确地停止java线程

错误方法:stop()方法--最重要的问题是让线程戛然而止,不知道完成了什么,哪些工作还没有做,也没有来得及做清理.正确的做法应该是使用一个退出标志,加入一个布尔判断,对值赋false即可。这样做的好处是:使得线程有机会使得一个完整的业务步骤被完整地执行,在执行完业务步骤后有充分的时间去做代码清理工作。

广为流传的错误停止线程的方法:interrupt()--初衷并不是用于停止线程,我们如使用interrupt方法,在while上判断线程值是否被中断,应该用isInterrupted()是否为false来处理,但他对调用sleep和join都会抛异常,因为interrupt的状态被清空。
在调用sleep()或者join()的时候,一旦其他线程调用interrupt(),它将会收到一个异常,这些被阻塞的线程因为某些原因需要被唤醒,比如外部发生了中断而需要响应,这时就采用抛出异常的方式来使其作出响应。总而言之,interrupt()方法并不能正确地停止进程。

备注:当线程正在处于某些方法中,如sleep(),调用interrupt(),会出现两种情况:1.sleep方法受到interrupt异常;2.interrupt状态被清空


这两天看到的,学到的,有意义的东西:

《程序员》:能否具体谈谈乐视目前的技术研发架构?

杨永强:乐视整个研发体系的架构分成好几个部分,大致布局如下:比如设置相对比较统一的产品团队,可保证产品在多终端上的一致性;此外,公共的组件尽量向底层抽象,比如每个业务都会做自己的缓存、数据、负载均衡等,这些公共的部分可以由一些平台型团队专职来做,比如我们的云计算公司里,有个转码云团队,核心就聚焦在转码上;还有些专门做PaaS层,把数据库形成一些公共数据池,使其组件化,并为上层的业务团队提供服务支持;而在上层业务团队,则有手机端、PC端和TV端的各种区分。总体原则就是这样——凡是能够公共抽象出来的技术功能,由专门的技术团队来做,业务层则由专门的业务团队来做。
《程序员》:能否具体谈谈乐视未来的产品规划?

杨永强:现在乐视主要有两大业务线,首先在互联网智能硬件上,除了智能电视,我们将专注于改良乐TV的OS,它是基于Android的操作系统,未来我们将以它为核心,除支持电视外,还将支持更多智能终端,以实现整个战略体系的移动化、大平台化。其次,对视频而言,从技术角度讲,我们将更多地关注这个问题:在用户观看视频的时间段内,如何产生一些有效的经营模式,给用户和企业带来更多的回报?例如,在传统网页上做广告,一个PV意味着用户浏览了一次;但对于视频网站,用户看了一个小时或者五分钟的视频,可能也就前面一个片段能产生些价值,那我们怎么充分利用用户在播放器驻留的时间呢?我相信在未来,有眼球的地方就是互联网入口,视频一定能成为入口之一。设想你在家里躺在沙发上看视频,有访客按门铃,此时可否在视频上直接弹出一个窗口,让你和访客互动?诸如此类基于视频的场景应用方式,将是未来我们关注、探索的重要方向。

《程序员》:你眼中的互联网未来趋势是什么?

杨永强:从最早的文字时代,随着网速慢慢地增强,进入现在图文混排的时代;下一个阶段,将是走向视频化的时代。好比我们今天在网上的沟通,已经可以用摄像的方式,但很早之前却不是这样,可能只能互相显示一段文字。文字表达出来的形象程度,和视频相比相差很远。文字是抽象的,每个人写出来都不一样,对于同一段文字,每个人的理解也不一样。但视频是一个现成的真实还原,有画面、声音,还有时间轴的变化,比图片更近了一步;因此我认为,互联网下一个阶段的主要趋势是视频化。但视频化不意味着只是看看电影、电视。视频相比于文字、图片等媒介载体,可以承载任何信息,我们除了用来看影视剧,还可以拥有很多应用场景:例如教育,或者电商网站中关于商品的介绍。再如,一个喜欢捣鼓IT产品的用户,想拆开iPhone手机,如果参考文字、图片介绍,可能要花费很长时间,但如果将拆手机的教程视频化,可能只需要播放十几秒钟,他就明白了——这就是视频的魅力所在。

各语言比较:
C适于快而小的程序,但不支持面向对象的编程;C++完全支持面向对象,但是非常复杂;Visual Basic与Delphi易学,但不可移植且有专利权;Java有很多简洁的功能,但是慢,等等。
Python作为入门的语言根据Partovi所言,Python对于初学者而言是一种简单的语言。因为很少强调语法,Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。

试试Ruby和Ruby on Rails

Ruby on Rails 是一个可以使你开发、部署、维护web应用程序变得简单的框架。虽然Ruby和Ruby on Rails有相似的名字,实际上是很有区别的。Ruby是一种脚本语言,就像Python,但是Ruby on Rails是一个Web应用程序框架。换句话说,Ruby是语言,而Ruby on Rails是一个工具,可以容易使用Ruby语言构建网站。

什么让Ruby和Ruby on Rails如此的有吸引力呢?Ruby on Rails使用的实时映射技术和元编程技术,免去了开发者在开发过程中编写大量样板文件代码的烦恼。在少数需要使用样板文件代码的时候,开发者可以通过Ruby on Rails内建的生成器脚本实时创建,而不再是通过手工编写。Ruby on Rails的这个特点可以使开发者更专注于系统的逻辑结构,而不必为一些琐碎的细节所烦扰。


推荐文章,Gbtags。一个小而美的轻视频互动播放社区:http://www.csdn.net/article/2014-12-09/2823022
0 0
原创粉丝点击