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

asp.net做网站头部和尾部_都用什么来实现百度竞价app

asp.net做网站头部和尾部_都用什么来实现,百度竞价app,建站行业有哪些,自己搭建服务器做网站83.多线程 什么是线程: 线程右进程创建的,是进程的一个实体 一个进程可以有多个线程 并发:同一个时刻,多个任务交替执行,造成一种貌似同时的错觉 并行:同一个时刻,多个任务同时执行&#x…

83.多线程

什么是线程:

  1. 线程右进程创建的,是进程的一个实体

  2. 一个进程可以有多个线程

并发:同一个时刻,多个任务交替执行,造成一种貌似同时的错觉

并行:同一个时刻,多个任务同时执行,多核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);}
​
}
线程基本使用

创建线程的两种方法:

  1. 继承Thread类,重写run方法

  2. 实现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;}}}
}

通知线程退出:

  1. 当线程完成任务后,会自动退出

  2. 还可以通过使用变量来控制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.pjxw.cn/news/26185.html

相关文章:

  • 相城高端网站建设营销策略有哪些
  • 淘宝网站c 设计怎么做的百度站内搜索提升关键词排名
  • 专业的营销型网站制作企业网站设计公司
  • 合肥市城乡建设局网站黄页网
  • 专门做网站的appseo发外链工具
  • 兄弟网站制作怎样让自己的网站排名靠前
  • 外卖网站那家做的好处珠海网站建设优化
  • 网站建设期间注意事项网站运营
  • 做阿里云网站微博推广
  • 某网站网站的设计与实现颜色广告
  • 广州seo网站推广顾问凡科建站后属于自己的网站吗
  • 全网营销推广网站建设百度推广信息流有用吗
  • dede网站搬家 空间转移的方法排名轻松seo 网站推广
  • 网站建设品牌好网盘搜索
  • 慈善组织网站建设方案百度关键词搜索量查询
  • 如何免费做视频二维码永久博客网站seo
  • 工信部isp申请网站广州营销seo
  • 阿里云ncs 建设网站青岛关键词网站排名
  • 做游戏解说上传在什么网站好360网站推广登录
  • 做网站开发的想接私活网络推广是诈骗吗
  • 自己做的网站怎么用qq登入怎么做自媒体
  • 网站备案信息真实性核验单个人企业培训机构有哪些
  • 网站功能建设seo站内优化和站外优化
  • 做彩票网站都是怎么拉人的百度软件下载中心官方网站
  • wordpress 搜索武汉seo工厂
  • 织梦网站模板使用教程海洋seo
  • 乐山做美食推荐的网站seo培训讲师招聘
  • 做网站的费用 优帮云网站建设免费网站
  • 网站的弹窗广告怎么做网站seo快速优化
  • 个人网站建设策划书网站怎么接广告