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

国内网站放国外服务器北京网站建设网络推广公司

国内网站放国外服务器,北京网站建设网络推广公司,网站建设费用一年多少钱,如何做装修网站线程 多线程就是一个程序中有多个线程在同时执行。 多线程下CPU的工作原理 实际上#xff0c;CPU(中央处理器)使用抢占式调度模式在多个线程间进行着高速的切换。对于CPU的一个核而言#xff0c;某个时刻#xff0c;只能执行一个线程#xff0c;而CPU的在多个线程间切换速度…线程 多线程就是一个程序中有多个线程在同时执行。 多线程下CPU的工作原理 实际上CPU(中央处理器)使用抢占式调度模式在多个线程间进行着高速的切换。对于CPU的一个核而言某个时刻只能执行一个线程而CPU的在多个线程间切换速度相对我们的感觉要快看上去就是在同一时刻运行。 其实多线程程序并不能提高程序的运行速度但能够提高程序运行效率让CPU的使用率更高。 一、创建线程 方法1继承Thread类重写run方法 public class SubThread extends Thread{public SubThread(){super(x5456); //通过构造方法修改线程名}public void run() {for(int i0;i100;i){System.out.println(super.getName()i);}} }  调用 public static void main(String[] args) {//创建刚刚继承Thread类的子类的对象SubThread st new SubThread();//通过setName方法修改线程名st.setName(x54256);//调用对象的start方法会自动执行我们重写的run方法st.start();for(int i0;i100;i) {System.out.println(Thread.currentThread().getName()i); //获取当前线程的对象调用getname()方法} }方法2实现接口Runnable重写run方法 public class SubRunnable implements Runnable{public void run(){for(int i0;i100;i){try {// 调用Thread类的sleep方法休眠50ms由于父接口没有throws异常so我们只能用try...catchThread.sleep(50); } catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName()...i);}} }调用 public static void main(String[] args) {//创建实现Runnable接口的类的对象SubRunnable sr new SubRunnable();//创建Thread类的对象Thread t new Thread(sr);//启动线程t.start();for(int i0;i100;i){System.out.println(Thread.currentThread().getName()...i);} }方法3使用匿名内部类,实现多线程程序 匿名内部类的前提继承或者接口实现 使用方法 new 父类或者接口(){  重写抽象方法} public static void main(String[] args) {//继承方式 XXX extends Thread{ public void run(){}}new Thread(){public void run(){System.out.println(!!!);}}.start();//实现接口方式 XXX implements Runnable{ public void run(){}}Runnable r new Runnable(){public void run(){System.out.println(###);}};new Thread(r).start();//或new Thread(new Runnable(){public void run(){System.out.println();}}).start();}  实现接口的好处 高内聚低耦合模块内能做的事就自己做模块间的关系要尽量的小 第二种方式实现Runnable接口避免了单继承的局限性所以较为常用。实现Runnable接口的方式更加的符合面向对象线程分为两部分一部分线程对象一部分线程任务。继承Thread类线程对象和线程任务耦合在一起。一旦创建Thread类的子类对象既是线程对象有又有线程任务。实现runnable接口将线程任务单独分离出来封装成对象类型就是Runnable接口类型。Runnable接口对线程对象和线程任务进行解耦。  多线程的内存图解 线程的一生  二、线程池 线程池其实就是一个容纳多个线程的容器其中的线程可以反复使用省去了频繁创建线程对象的操作无需反复创建线程而消耗过多资源。 在java中如果每个请求到达就创建一个新线程开销是相当大的。在实际使用中创建和销毁线程花费的时间和消耗的系统资源都相当大甚至可能要比在处理实际的用户请求的时间和资源要多的多。除了创建和销毁线程的开销之外活动的线程也需要消耗系统资源。如果在一个jvm里创建太多的线程可能会使系统由于过度消耗内存或“切换过度”而导致系统资源不足。为了防止资源不足需要采取一些办法来限制任何给定时刻处理的请求数目尽可能减少创建和销毁线程的次数特别是一些资源耗费比较大的线程的创建和销毁尽量利用已有对象来进行服务。 线程池主要用来解决线程生命周期开销问题和资源不足问题。通过对多个任务重复使用线程线程创建的开销就被分摊到了多个任务上了而且由于在请求到达时线程已经存在所以消除了线程创建所带来的延迟。这样就可以立即为请求服务使用应用程序响应更快。另外通过适当的调整线程中的线程数目可以防止出现资源不足的情况。 方法1使用线程池方式--Runnable接口 public static void main(String[] args) {//调用工厂类的静态方法,创建线程池对象ExecutorService接口的实现类//返回线程池对象,是返回的接口ExecutorService es Executors.newFixedThreadPool(2);  //池内有2个线程//调用接口实现类对象es中的方法submit提交线程任务//将Runnable接口实现类对象,传递es.submit(new SubRunnable());es.submit(new SubRunnable());es.submit(new SubRunnable());es.submit(new SubRunnable()); }实现的Runnable接口 public class ThreadPoolRunnable implements Runnable {public void run(){System.out.println(Thread.currentThread().getName() 线程提交任务);} } 方法2使用线程池方式—Callable接口 之前的实现方法线程运行完没有返回值而且不能抛异常。 Callable接口与Runnable接口功能相似用来指定线程的任务。其中的call()方法用来返回线程任务执行完毕后的结果call方法可抛出异常。 public static void main(String[] args) throws ExecutionException, InterruptedException {ExecutorService es Executors.newFixedThreadPool(2);//提交线程任务的方法submit方法返回 Future接口的实现类FutureInteger f es.submit(new SubCallable());//获取返回值Integer i f.get();System.out.println(i); } 实现的Callable接口 public class SubCallable implements CallableInteger{Overridepublic Integer call() {return 123;} }使用线程实现异步计算 private int a; //通过构造方法传参 public GetSumCallable(int a){this.aa; }public Integer call(){int sum 0 ;for(int i 1 ; i a ; i){sum sum i ;}return sum; }ThreadPoolDemo.java /** 使用多线程技术,求和* 两个线程,1个线程计算1100,另一个线程计算1200的和* 多线程的异步计算*/ public class ThreadPoolDemo {public static void main(String[] args)throws Exception {ExecutorService es Executors.newFixedThreadPool(2);FutureInteger f1 es.submit(new GetSumCallable(100));FutureInteger f2 es.submit(new GetSumCallable(200));System.out.println(f1.get());System.out.println(f2.get());es.shutdown();} }FutureTask的使用 FutureTask继承了Callable和Future接口所以它既能像callable一样被Thread执行也能像Future那样获取结果。 Overridepublic boolean testServiceUrl(ServiceUrlTestDTO url){// 调用地图服务CallableBoolean callable new WebServiceUtil(url.getUrl(),url.getProxy(),url.getToken());FutureTaskBoolean futureTask new FutureTask(callable);Thread thread new Thread(futureTask);thread.start();try {Boolean isOK futureTask.get();System.out.println(服务【 url.getUrl() 】测试 isOK);return isOK;} catch (InterruptedException e) {e.printStackTrace();} catch (ExecutionException e) {e.printStackTrace();}return false;}转载于:https://www.cnblogs.com/x54256/p/8443794.html
http://wiki.neutronadmin.com/news/222432/

相关文章:

  • 河南做网站送记账广告创意
  • 广州公司网站制作企业门户样式
  • 公司网站的作用意义维护建设管理那个网站做二手买卖的
  • 绛县网站建设网站title标签内容怎么设置
  • 做短视频的网站先进网站建设流程
  • 资源网站都有哪些山河集团建设有限公司网站
  • php网站目录系统江西百度推广公司
  • 电热设备网站建设网站推广手段有哪些
  • 5年网站续费多少钱太康做网站公司
  • 网站聊天工具代码建站代理
  • 怎么做一个网站怎么样网站死链接提交
  • 平面设计网站首页链接买卖
  • 无锡网站建设 app站长工具查询网站信息
  • 煤炭网站建设规划书开发公司欠缴空置房物业费的案例
  • 摄影网站论文o2o网站建设基本流程
  • 设计 网站访问次数站长平台网站
  • 贺州网站推广网络维护员主要什么工作
  • 怎样做网络推广优选豪升网络好重庆白云seo整站优化
  • 卢龙建设银行官网网站上云网站做等保
  • 南宁哪里有做网站的公司wordpress主题怎么导入
  • 怎样在微信做产品网站网站建设欧美风格
  • 企业网站重要性网络推广是以企业产品或服务
  • 龙岗专业做网站公司精品网课平台
  • 网站建设冖金手指花总十四桐庐城乡建设局网站
  • 云南昆明网站建设价格网站建设 风险防控
  • 舟山市建设局网站建设网站服务器怎么选
  • 模拟建设官方网站移动互联网软件开发
  • 网站停留时间 从哪里获取城市建设理论研究官方网站
  • 南通网站群建设商城推广方案
  • 南通网站制作维护有人情味的网站