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

广州做网站公司电话太原小程序制作电话

广州做网站公司电话,太原小程序制作电话,wordpress 官网主题,wap开头的网址83.多线程 什么是线程#xff1a; 线程右进程创建的#xff0c;是进程的一个实体 一个进程可以有多个线程 并发#xff1a;同一个时刻#xff0c;多个任务交替执行#xff0c;造成一种貌似同时的错觉 并行#xff1a;同一个时刻#xff0c;多个任务同时执行#x…83.多线程 什么是线程 线程右进程创建的是进程的一个实体 一个进程可以有多个线程 并发同一个时刻多个任务交替执行造成一种貌似同时的错觉 并行同一个时刻多个任务同时执行多核CPU可以实现。可能并发和并行同时存在 通过Java查询电脑的CPU个数 public class HelloJava { ​public static void main(String[] args) {Runtime runtime Runtime.getRuntime();//获取当前电脑的cpu数量int cpuNums runtime.availableProcessors();System.out.println(当前电脑的cpu个数 cpuNums);} ​ } 线程基本使用 创建线程的两种方法 继承Thread类重写run方法 实现Runnable接口重写run方法 注意若主线程结束了但还有子线程在运行就不会导致整个线程关闭 为什么要用cat.start()而不是直接用cat.run()呢 run就是一个普通方法没有真正启动一个线程就会把run方法执行完毕才向下执行 相当于串行化执行 start才会真正的启动一个线程 (1) public synchronized void start(){start0(); } (2) //start0()是本地方法是JVM调用底层是C/C实现 //真正达到多线程效果的是start(),而不是run() private native void start0(); //start()调用start0()方法后该线程不一定会立马执行只是将线程变成了可运行状态。具体什么时候执行取决于CPU由CPU统一调度 通过Runnable接口实现线程 因为Java是单继承的在一个类可能已经继承了某个父类这时在用继承Thread方法来创建线程显然不可行 所以提供了另一个方式创建线程就是通过实现Runnable接口 Runnable没有start()方法怎么办呢 //创建一个Thread对象把dog对象(实现Runnable)放入Thread Thread thread new Thread(dog); thread.start(); //这里调用start()方法启动线程并带动run方法 //这里是因为底层使用了 代理模式逻辑如下 ​ //线程代理类模拟了一个极简的Thread class ThreadProxy implements Runnable{private Runnable target null;Overridepublic void run(){if(target ! null){target.run();//动态绑定}}public ThreadProxy(Runnable target){this.target target}public void start(){start0();}public void start0(){run();} } 多线程案例 public class HelloJava {public static void main(String[] args) {T1 t1 new T1();T2 t2 new T2();Thread thread1 new Thread(t1);Thread thread2 new Thread(t2);thread1.start();thread2.start();} } class T1 implements Runnable{ ​int count 0; ​Overridepublic void run() {while (true) {//每隔一秒输出“Hello World”10次System.out.println(hello world (count));try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}if (count 10){break;}}} } class T2 implements Runnable{ ​int count 0; ​Overridepublic void run() {while (true) {//每隔一秒输出“hi”五次System.out.println(hi (count));try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}if (count 5){break;}}} } 通知线程退出 当线程完成任务后会自动退出 还可以通过使用变量来控制run方法退出的方式停止线程即通知方式 //需求启动一个线程t要求在main线程中去停止线程t public class HelloJava {public static void main(String[] args) throws InterruptedException {T t new T();t.start();//如果希望主线程控制t线程的终止必须可以修改loop//让t退出run方法从而终止t线程 -通知方式 ​//让主线程休眠10秒再通知t线程退出Thread.sleep(1000*10);t.setLoop(false);} } class T extends Thread{//设置一个控制变量private boolean loop true;int count 0; ​Overridepublic void run() {while (loop) {try {Thread.sleep(50);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(T 运行中...... (count));}} ​public void setLoop(boolean loop) {this.loop loop;} } 线程常用方法 1.setName 设置线程名称使之与参数 name 相同 2.getName 返回该线程的名称 3.start 使该下暗藏卡爱上执行Java虚拟机底层调用该线程的start0方法 4.run 调用线程对象run方法 5.setProiority 更改线程的优先级 6.getProiority 获取线程的优先级 7.sleep 在指定的毫秒数内让当前正在执行的线程休眠 8.interrupt 中断线程 interrupt中断线程但没有真正的结束线程所以一般用于中断正在休眠的线程
http://www.hkea.cn/news/14335966/

相关文章:

  • 别人做的网站域名到期怎么办扬州天达建设集团有限公司网站
  • 模板建站适屏黑龙江网站建设seo优化
  • 做网站公司需要多少钱四川建设银行手机银行下载官方网站下载安装
  • 关于网站建设管理的通知超级软文网
  • 密云做网站的分类信息网站发布标题
  • 重庆网站开发公阿克苏网站开发
  • 做网站后有人抢注关键词软件开发技术服务合同
  • 网站建设公司发展理念计算机培训机构
  • 网站前端如何做兼职网站宣传平台
  • 如何在自己电脑上做网站网站入侵怎么做
  • 手机如何做车载mp3下载网站网址域名查询
  • html5video网站佛山市企业网站seo点击软件
  • 同学会网站建设方案建设工程造价网站
  • 浦口区网站建设及推广展示型网站设计
  • 济南网站制作公司报价人人设计网怎么找不到了
  • 汇泽网站建设物流公司网站模板
  • 那些域名可以做后缀做网站网站建设 运维 管理包括哪些
  • 开发网站所用技术速成网站-
  • 郑州建设网站设计wordpress上传图片权限
  • 网站的默认首页网站建设行业市场分析
  • 安卓网站客户端制作购物网站排行榜
  • 山东公司网站推广优化国外域名 网站备案
  • 湖南 网站建设房城乡建设部网站
  • 聊城网站空间公司网站301了不知道在哪做的
  • 手淘网站建设需求分析网站海外推广技巧
  • 网站 内容优化婚礼婚庆网站建设
  • 优化培训学校网站百度关键词优化
  • 品牌网站建站公司在线手机动画网站模板下载安装
  • 深圳个人网站制作网站建设需要会什么
  • 常熟公司做网站外网常用网站