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

关于设计方面的网站襄樊网站建设公司

关于设计方面的网站,襄樊网站建设公司,芜湖市建设厅网站,新浪微博 wordpress插件一、线程与进程线程定义进程中执行的一个代码段#xff0c;来完成不同的任务组成#xff1a;线程ID#xff0c;当前指令指针(PC)#xff0c;寄存器集合(存储一部分正在执行线程的处理器状态的值)和堆栈进程定义执行的一段程序#xff0c;一旦程序被载入到内存中准备执行就…一、线程与进程线程定义进程中执行的一个代码段来完成不同的任务组成线程ID当前指令指针(PC)寄存器集合(存储一部分正在执行线程的处理器状态的值)和堆栈进程定义执行的一段程序一旦程序被载入到内存中准备执行就是一个进程组成文本区域(存储处理器执行的代码)、数据区域(存储变量和进程执行期间的动态分配的内存)和堆栈(存储着活动过程调用的指令和本地变量)例如Windows系统中运行的一个exe就是一个进程进入任务管理器可以查看系统运行的进程以及每个进程中的线程数线程与进程的关系1.  进程是系统内存分配的最小单位线程是系统调度的最小单位进程拥有自己的内存空间因为线程是属于进程的多线程直接共享该进程中内存提高了程序的运行效率2.  一个程序至少有一个进程一个进程中包括一条 or 多条线程线程不能独立于进程在Java中每次程序运行至少启动2个线程一个是main线程一个是垃圾收集线程。因为每当使用 Java 命令执行一个类时都会启动一个JVM每一个 JVM 实际上就是在操作系统中启动了一个进程3.  进程与线程都可以并发执行问题如何了解 “并发” 执行 它与 “并行”执行一样吗并行执行从宏观和微观的角度都是同时执行的并发执行从宏观角度似乎是同时执行但从微观角度不是同时执行操作系统采取时间片的机制使多个进程(线程)快速切换执行在宏观上就有并行执行的错觉在单核情况下不存在并行执行但在多核情况下进程(线程)分布在不同的CPU中可以并行执行程序二、线程的生命周期线程是一个动态执行的过程1.  新建状态 New创建线程对象进入新建状态此时线程属于 not  alive直到执行 start()创建线程 使用 new 关键字和Thread 类或其子类 例如Thread   t  new  MyThread();2.  就绪状态 Runnable调用线程对象的 start() 方法进入就绪状态此时线程属于 alive 但还未进入执行只是做好了被 CPU 调度的准备3.  运行状态 Running当线程获取到CPU进入运行状态线程的 run() 方法才开始被执行此时线程属于 alive只有当线程处于就绪状态才能被CPU调度所以就绪状态是运行状态的唯一入口4.  阻塞状态 Blocked处于运行状态的线程由于某种原因放弃使用CPU停止运行进入阻塞状态此时线程属于 alive同步阻塞同步锁 synchronized当某线程占有了该同步锁 则其他线程就不能进入到同步锁中则这些线程就会进入阻塞状态当在阻塞队列的线程获取到同步锁时才能进入到就绪状态等待被调度等待阻塞(理解得有点绕)调用线程的 wait() 线程进入等待状态此时会释放占用的 CPU 资源和锁(wait()方法需要在锁中使用)当被其他线程调用 notify() 唤醒之后需要重新获取对象的锁所以会先进入Blocked状态才会进入就绪状态其他阻塞调用线程的 sleep() 或 join() 或 发出了I/O请求线程会进入到阻塞状态当 sleep() 状态超时、join() 等待线程终止或者超时、或者 I/O 处理完毕时线程重新进入就绪状态5.  死亡状态 Dead当一个线程的 run() 方法运行完毕 or 被中断 or 被异常退出该线程进入死亡状态三、线程的创建-   实现 Runnable 接口实例化 Thread 类(线程无返回值)-   继承 Thread 类重写 Thread 的 run() 方法(线程无返回值)-   实现 Callable 接口通过FutureTask 包装器创建线程(线程有返回值)1.  实现 Runnable 接口实例化 Thread 类(线程无返回值)step1:  创建一个类例如 RunnableThread实现 Runnable 接口step2:  实例化 RunnableThread 对象 创建 Thread 对象将 RunnableThread 作为参数传给 Thread 类的构造函数然后通过 Thread.start() 方法启动线程运行结果问题 为什么创建 RunnableThread 对象后需要将它和 Thread 对象进行关联查看 Runnable 接口的源代码可以看到 Runnable 接口只有一个 run() 方法所以需要通过 Thread 类的 start() 方法来启动线程启动线程后Thread 类中的 run() 方法会先判断传入的 target Runnable 对象的 run() 方法是否为空若不为空则调用 target Runnable 对象的 run() 方法而且RunnableThread 类实现 Runnbale 接口中不能直接使用 Thread 类中的方法需要先获取到Thread 对象后才能调用 Thread 方法2.  继承 Thread 类重写 Thread 的 run() 方法(线程无返回值)step1:  创建一个类例如 MyThread继承 Thread 类重写 Thread 的 run() 方法step2:  实例化 MyThread 对象直接调用 start() 方法启动线程运行结果问题实现 Runnable 接口 和 继承 Thread 类运行结果不一样这是为什么继承 Thread 类和实现 Runnable 接口实现多线程会发现这是两个不同的实现多线程继承 Thread 类是多个线程分别完成自己的任务实现 Runnable 接口是多个线程共同完成一个任务其实用继承Thread类也可以实现只是比较麻烦这样的话实现 Runnable 接口比继承 Thread 类具有一定的优势1)适合多个相同的程序代码的线程去处理同一个资源2)可以避免 Java 中的单继承的限制当一个类继承 Thread 类后则不能在继承别的类而接口比较灵活可以实现多个接口而且实现接口了还可继续继承一个类3)增加程序的健壮性代码可以被多个线程共享代码和数据独立3.  实现 Callable 接口通过 FutureTask 包装器创建线程(线程有返回值)step1:  创建一个类例如 CallableThread实现 Callable 接口重写 Callable 接口的 call() 方法step2:  实例化 CallableThread 对象使用 FutureTask 类来包装 CallableThread 对象然后 FutureTask 对象作为参数传给 Thread 类的构造函数通过 Thread.start() 方法启动线程使用 FutureTask.get() 得到 Callable 接口的 call() 方法的返回值返回结果Callable 和 Runnable 相似类实例都需要被 Thread 执行但 Callable 接口能返回一个值或者抛出一个异常Runnable 不能实现 Callable 接口需要重写其唯一的 call() 方法FutureTask 实现了 Runable 接口 和 Future 接口所以如果想 Callable 实例作为 Thread 的执行体就必须通过 FutureTask 来作为桥梁
http://www.zqtcl.cn/news/49902/

相关文章:

  • 中英文网站切换怎么做软通动力和中软国际对比
  • 网站建设网站模板厦门网站建设网站制作
  • 网站轮播图用啥软件做个人网店搭建思路设计
  • 老师众筹网站开发搭建企业网站具体过程
  • 网站建设常见错误南昌网站建设案例
  • 网站查icp备案查询系统网站建设整改实施方案
  • 网站查询访问域名做app软件
  • 长春免费建站模板安顺建设局网站官网
  • 廊坊永清网站建设如何 套用模板做网站
  • 专业定制房地产网站建设网上翻译网站做译员
  • 网站如何做数据分析建筑工程网络图分为
  • 网站建设公司渠道百度云盘登录入口
  • wordpress登录后才能进入某分类东莞seo关键词排名优化推广
  • 做网站要哪些人员地方生活门户网站名称
  • 文学类网站怎么做详情页设计模板详情页设计素材
  • 网站中怎么做图片的变换东莞市义务教育阶段统一招生平台
  • 网站关键词之间用什么符号隔开网页制作教程用什么软件
  • 北京网站备案号查询网站建设doc
  • 贵阳市网站建设公司wordpress 去掉版权信息
  • dede网站怎么做单页面做问卷的网站生成二维码
  • 网站开发需解决什么问题chinacd.wordpress变装
  • 怎么做自己的微信网站磁力搜索引擎下载
  • 网站导航栏自适应显示网站开发的行业情况分析
  • 网络营销典型企业seo网站优化服务
  • 彩票网站搭建专业网站设计软件工具
  • 网站技术解决方案不包括wordpress子站点用户无角色
  • 沂源做网站深圳网站建设龙华信科
  • 重庆网站建站价格怎么建造自己的网站
  • 网站建设团队介绍怎么写南昌seo站外优化
  • asp.net mvc5 网站开发实践金融行业seo整站优化