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

上海企业网站建设推荐wordpress目录手机版

上海企业网站建设推荐,wordpress目录手机版,网络营销推广的目标与策略,wordpresscom下载多线程相关的概念 并发 并发是指在同一时间段内#xff0c;两个或多个任务在同一个处理器上交替执行#xff0c;使得在宏观上看起来像是同时进行。并发是通过快速切换任务来模拟同时执行的效果#xff0c;实际上在任何一个时刻点上只有一个任务在执行。 也就是说#xff0…多线程相关的概念 并发 并发是指在同一时间段内两个或多个任务在同一个处理器上交替执行使得在宏观上看起来像是同时进行。并发是通过快速切换任务来模拟同时执行的效果实际上在任何一个时刻点上只有一个任务在执行。 也就是说并发看起来像多个程序同时运行但真相是CPU一个个按顺序快速执行的结果给人造成程序在同一时刻都在运行的”假象“仿佛在并行 并行 并行是指两个或多个事件在同一时刻发生即多个指令或任务在同一时刻被多个处理器同时执行。在并行计算中每个处理器都独立地执行任务互不干扰。 并发就是真的多个程序在同时运行了现在很多电脑的处理器都是多核处理器其中多核处理器就是能够完成并行的必要条件 因为每个处理器在同一时刻只能处理一个事件当我们想要达到并发的状态需要多个处理器来分别处理每个事件。 进程 进程Process是计算机中的程序关于某数据集合上的一次运行活动是系统进行资源分配的基本单位是操作系统结构的基础。在早期面向进程设计的计算机结构中进程是程序的基本执行实体在当代面向线程设计的计算机结构中进程是线程的容器。程序是指令、数据及其组织形式的描述进程是程序的实体。 也就是说一个程序在运行时就会产生一个进程这个进程就是这个程序的一切数据和操作的集合例如当我们打开浏览器时系统中就会产生一个和浏览器相绑定的进程 线程 线程thread是操作系统能够进行运算调度的最小单位。它被包含在进程之中是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流一个进程中可以并发多个线程每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程lightweight processes但轻量进程更多指内核线程kernel thread而把用户线程user thread称为线程。 一个程序运行后会执行各种操作这种操作就是以线程的方式在计算机系统下执行的例如我们打开QQ会产生一个进程当我们打开一个好友的聊天框又会生成这个进程的聊天框线程来完成发送消息语音通话等任务。 下面来介绍如何在java程序中实现多线程运行 Java中创建线程 1. 通过实现Runnable接口 在Java中提供了Runnable这个接口我们想要创建新的线程可以定义新的类实现这个接口然后实现其中的run()方法在方法中编写我们的业务代码这个run方法是线程的入口 查看源码我们可以看到它的代码就是这么朴实无华 public interface Runnable {/*** When an object implementing interface codeRunnable/code is used* to create a thread, starting the thread causes the objects* coderun/code method to be called in that separately executing* thread.* p* The general contract of the method coderun/code is that it may* take any action whatsoever.** see java.lang.Thread#run()*/public abstract void run(); } 然后我们需要知道java中创建新的进程需要调用Thread类的start方法但是Runnable接口中也没有start方法呀但是我们可以创建一个Thread类型的对象用我们定义的实现了Runnable接口的类当作构造器参数实例化一个Thread类型的对象然后利用这个对象调用start方法它会自动调用我们新实现的run方法 查看源码我们可以看到Thread有这样一个构造器它的参数是Runnable类型我们知道接口类型可以接收实现了该接口的类的引用所以我们直接传入我们新定义的类即可 public Thread(Runnable target) {init(null, target, Thread- nextThreadNum(), 0);} 下面上代码示例大家可以自己运行试一下 public class ThRTest{public static void main(String []args) throws InterruptedException{Thread thread1new Thread(new Dog());thread1.start();//调用start方法才会创建一个线程thread1.setName(狗狗线程);//给线程设置一个名字System.out.println(thread1.getName()开始执行.......);//get方法可以获取线程的名字如果我们不自己设置会有一个默认的名字for(int i0;i10;i){System.out.println(主线程在执行i);Thread.sleep(500);//Thread类的静态方法可以让程序暂停单位时间}}}class Dog implements Runnable{int times0;Override //run方法中定义我们需要多线程执行的代码public void run() {while(true){System.out.println(狗狗线程执行中(times));try {Thread.sleep(500);//Thread类的静态方法可以让程序暂停单位时间} catch (InterruptedException e) {e.printStackTrace();}if(times20)break;}}} 上面这个代码在执行到主函数时会给主函数生成一个主线程然后当主线程执行到我们调用start方法时会为生成一个新的线程去执行我这个代码后又写了个循环输出字符串标记执行这个代码我们可以得到以下结果 这里我们可以看到主函数中的输出代码和我们自己创建的线程中的输出代码是并行执行的我刚学的时候感觉很神奇居然还能这么玩以上代码里面有一些Thread的方法都很简单大家看注释应该也能看明白这里就不一一解释了。 2.通过继承Thread类 前面我们已经使用过Thread类了其实Thread类也是实现了Runnable接口只不过是又新增了一些创建线程相关的方法而已。 我们通过源码查看Thread类的定义 public class Thread implements Runnable 可以看到它也是实现了接口Runnable 第一个方法中我们最后还是通过Thread类创建了线程因为start方法只有Thread类中有所以当我们新定义的类直接继承了Thread类的时候我们就可以直接创建我们定义的类的对象就可因为大家知道子类会继承父类的方法所以我们利用这个方法创建线程只需要对上面的代码略作修改 如下 public class ThRTest{public static void main(String []args) throws InterruptedException{Thread thread1new Dog();thread1.start();//调用start方法才会创建一个线程thread1.setName(狗狗线程);//给线程设置一个名字System.out.println(thread1.getName()开始执行.......);//get方法可以获取线程的名字如果我们不自己设置会有一个默认的名字for(int i0;i10;i){System.out.println(主线程在执行i);Thread.sleep(500);//Thread类的静态方法可以让程序暂停单位时间}}}class Dog extends Thread{int times0;Override //run方法中定义我们需要多线程执行的代码public void run() {while(true){System.out.println(狗狗线程执行中(times));try {Thread.sleep(500);//Thread类的静态方法可以让程序暂停单位时间} catch (InterruptedException e) {e.printStackTrace();}if(times20)break;}}} 结果和上面的一样这里就不展示了 为什么会有两种创建方法 很多朋友很疑惑为什么会有好几种方式创建线程这两种方法的区别和连续 我们可以看到两种方法一个是通过实现接口一个是通过继承提到继承我们就自然而然的离不开Java的继承规则不允许多继承即每个类最多只能继承一个类那如果我们新定义的Dog类继承自Animal类我们就只能利用实现Runnable接口的方式来创建线程了算是对java继承机制的一个弥补方便用户编程因为现实中很多类都需要继承别的类所以一般情况下都是利用实现接口这个方法。 实现接口类创建线程的优点 我们来看实现接口类创建线程的代码 Dog dgnew Dog();Thread thread1new Thread(dg);thread1.start();//调用start方法才会创建一个线程 我们只需要给Thread构造器传一个参数就可以创建线程那么当我们需要创建大量的相同的线程时我们就可以利用这个方式只需要创建一个Dog类对象然后重复创建Thread即可如果是继承的方式每生成一个线程我们都需要生成一个新的对象相对来说减少了内库占用也显得代码更加简洁实用。 总结 多线程在实际的应用程序中法非常常用例如我们在12306买票就是一个多线程的过程每个准备抢票的人的手机上都会生成一个抢票线程当全国几亿人同时访问这个软件它如何能不出错保证系统运行正常呢这里面涉及的并发并行和多线程知识非常之多。希望大家都要学好这一块的知识学习在路上加油
http://www.hkea.cn/news/14415817/

相关文章:

  • 破解进入网站后台建设部网站实名制举报
  • 贵阳城乡建设学校网站大连网站建设案例
  • 中国建设监理协会网站会员专区海南七星彩网站建设
  • 多种网站班玛县网站建设公司
  • 安徽 建设 招聘信息网站网站建设 安庆
  • 网站建设公司计划书软件下载网站模版
  • 百度的网站收录怎么做汉服网页设计作品
  • 测词汇量的专业网站网站建设导入视频
  • 手机免费建立网站济南seo优化公司
  • 做淘宝推广开网站合适全屋定制品牌推荐
  • 建材公司网站建设方案我爱777在线观看
  • p2p网站建设后期维护私人pk赛车网站怎么做
  • 如何做网站豆瓣厦门seo网络推广
  • 免费建站系统下载乐平网站
  • dw做的网站能搜到吗wordpress主题柚子皮zip
  • 兔展在线制作网站html网页制作总结
  • 榆林尚呈高端网站建设学院评估 网站建设整改
  • 品牌企业网站建设公司价格网站开发端口查询
  • 网站建设有哪些问题视频网站建站程序
  • 做照片视频的网站资讯型电商网站优缺点
  • 襄阳手机网站建设合肥房产网365
  • 织梦网站栏目江苏省建设执业资格中心网站
  • 网站开发 视频播放器wordpress 好用插件
  • 学校网站设计思路系统集成项目管理
  • windows 2003做网站如何知道wordpress
  • html网站免费模板开发公司移交给物业资料说明
  • 做英文网站怎么赚钱网站做流量的论坛贴吧
  • 建站公司网站 phpwind网站建议反馈应该怎么做
  • 廊坊哪里能够做网站微信公众号做电影网站要域名吗
  • 网站建设目的与作用织梦系统做的网站打开慢