阿里云网站简单建设搜索引擎营销的实现方法有
本节内容需要有些基础知识,如进程和线程,队列数据结构
一、setTimeout和setInterval
只要使用过JavaScript的朋友,对setTimeout和setInterval应该不会默生,如果光说怎样去使用这个API,并不难,无非就是隔多少毫秒再执行某个函数,把变化的内容封装在函数中,就可以制作出动画效果,这也是最初写JavaScript时的常见写法,多年以前的IE6时代我对这个函数的印象就是它是用来做网页动画特效的,由于IE6浏览器并未开放源码,那这个定时任务到底是怎样执行的呢?只能去官方通过文档了解。后来,Google浏览器Chrome V8引擎是开源,通过源码,可以了解到JavaScript的setTimeout是怎样实现的了,关键部分就是消息队列和事件循环, 把任务放到了队列中,隔一定时间再把它取出来执行,我们知道浏览器渲染进程中所有运行在主线程上的任务都需要先添加到消息队列,然后事件循环系统再按照顺序执行消息队列中的任务.
在Java NIO中的也是相类似的玩法,开一个线程,在线程中不断的轮询是否有TCP连接事件或是读写事件,如果有则进入循环并判断是哪种任务并给出相应的处理逻辑,在NIO出现前,用IO写服务器,同样会开一个线程,只是accept方法是要阻塞并等待
// 轮询,且返回时有就绪事件
while (selector.select() > 0){
// 获取就绪