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

做网站办公照片/汕头网页搜索排名提升

做网站办公照片,汕头网页搜索排名提升,莆田网站建设哪家好,电子商务网站建设的基本流程进程与线程概述进程正在运行的程序 是系统进行资源分配和调用的独立单位 线程是进程中的单个顺序控制流,是一条执行路径单线程:一个进程如果一条执行路径,则称为单线程程序多线程:一个进程如果有多条执行路径,则称为多…

564257efbc277a4b46051fcc3a3eb8e8.png

进程与线程

概述

  • 进程
  • 正在运行的程序
  • 是系统进行资源分配和调用的独立单位
  • 线程
  • 是进程中的单个顺序控制流,是一条执行路径
  • 单线程:一个进程如果一条执行路径,则称为单线程程序
  • 多线程:一个进程如果有多条执行路径,则称为多线程程序

多线程的实现方式

  • 方式1:继承Thread类
  • 定义一个类MyThread继承Thread类
  • 创建MyThread类的对象
  • 启动线程

```java package duoxianchen;

public class MyThread extends Thread{ public MyThread() { }

public MyThread(String name) {super(name);}@Overridepublic void run() {for(int i=0;i<100;i++){System.out.println(getName()+":"+i);}}

} ```

  • 测试类

```java package duoxianchen;

public class demo1 { public static void main(String[] args) { MyThread my1=new MyThread(); MyThread my2=new MyThread(); my1.start(); my2.start(); } } ```

  • 为什么要重写run()方法
  • 因为run()是用来封装被线程执行的代码
  • run()方法和start()方法的区别
  • run():封装线程执行的代码,直接调用,相当于普通方法的调用
  • start():启动线程;然后用JVM调用此线程的run()方法

设置和获取线程名称

  • void setName(String name):将此线程的名称更改为等于参数name
  • String getName():返回此线程的名称
  • 通过构造方法也可以设置线程名称
  • 如何获取main()方法所在的线程名称
  • public static Thread current Thread():返回对当前正在执行的线程对象的引用

```java public class demo1 { public static void main(String[] args) { // MyThread my1=new MyThread(); // MyThread my2=new MyThread(); //Thread(String name) MyThread my1=new MyThread("高铁"); MyThread my2=new MyThread("地铁");

my1.start();my2.start();}

} ```

线程调用

  • 线程有两种调度模型
  • 分时调度模型:所有线程轮流使用CPU的使用权,平均分配每个线程占用CPU的时间片
  • 抢占式调度模型:优先让优先级搞的线程使用CPU,如果线程的优先级相同,那么会随机选择一个,优先级高的线程获取的CPU时间片相对多一些
  • java使用的是抢占式调度模型
  • 假如计算机只有一个CPU,那么CPU在某一个时刻只能执行一条指令,线程只有得到CPU时间片,也就是使用权,才可以执行指令,所以说多线程程序的执行是由随机性,因为谁抢到CPU的使用权是不一定的

Thread类中设置的获取线程优先级的方法

  • public final int getPriority():返回此线程的优先级
  • public final void setPriority(int newPriority):更改此线程的优先级

java public class demo2 { public static void main(String[] args) { ThreadPriority tp1=new ThreadPriority(); ThreadPriority tp2=new ThreadPriority(); ThreadPriority tp3=new ThreadPriority(); tp1.setName("高铁"); tp2.setName("qiuyifan"); tp3.setName("fanfan"); //public final int getPriority():返回此线程的优先级 System.out.println(tp1.getPriority()); //public final void setPriority(int newPriority):更改此线程的优先级 //tp1.setPriority(1000);class IllegalArgumentException extends RuntimeException System.out.println(Thread.MAX_PRIORITY);//10 System.out.println(Thread.MIN_PRIORITY);//1 System.out.println(Thread.NORM_PRIORITY);//5 tp1.setPriority(5); tp2.setPriority(10); tp3.setPriority(1); tp1.start(); tp2.start(); tp3.start(); } }

  • 线程默认优先级是5;线程优先级范围是1-10
  • 线程优先级高仅仅表示线程获取的CPU时间片的几率高,但是要在次数比较多,或者多次运行后才看到你想要的结果

线程控制

  • static void sleep(long millis):使当前正在执行的线程停留指定的毫秒数
  • void join():等待这个线程死亡
  • void setDaemo(boolean on):将此线程标记为守护线程,当运行的线程都是守护线程时,java虚拟机将退出

java public class demo3 { public static void main(String[] args) { //void join():等待这个线程死亡 ThreadJoin tj1=new ThreadJoin(); ThreadJoin tj2=new ThreadJoin(); ThreadJoin tj3=new ThreadJoin(); tj1.setName("qiuyifan"); tj2.setName("qiuqiuqiu"); tj3.setName("qiuqiqu"); tj1.start(); try { tj1.join(); } catch (InterruptedException e) { e.printStackTrace(); } tj2.start(); tj3.start(); } }

```java public class demo4 { public static void main(String[] args) { ThreadDaemon td1=new ThreadDaemon(); ThreadDaemon td2=new ThreadDaemon(); td1.setName("fanfan"); td2.setName("qiqiu"); //设置主线程为刘备 Thread.currentThread().setName("yiiy"); //设置守护线程 td1.setDaemon(true); td2.setDaemon(true); td1.start(); td2.start();

for(int i=0;i<10;i++){System.out.println(Thread.currentThread().getName()+":"+i);}}

} ```

  • 任何一个守护线程都是JVM中所有非守护线程的保姆,只要当前JVM实例中尚存在任何一个守护线程没有借宿,守护线程就全部工作

java public class TreadSleep extends Thread{ @Override public void run() { for(int i=0;i<100;i++){ System.out.println(getName()+":"+i); try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } } } }

java public class demo5 { public static void main(String[] args) { TreadSleep ts=new TreadSleep(); TreadSleep ts1=new TreadSleep(); ts.setName("qiuqqiu"); ts1.setName("fanafn"); ts.start(); ts1.start(); } }

http://www.lbrq.cn/news/1457551.html

相关文章:

  • 做兼职哪家网站靠谱/关键词什么意思
  • 网络推广外包流程/如何利用seo赚钱
  • 做网站图标/网络营销渠道建设方案
  • 没有官方网站怎么做seo优化/在线建站模板
  • 网站模板下载器/速推网
  • 电子商务网站建设与维护展望/江西seo推广软件
  • 做网站图片多少钱/杭州seo推广优化公司
  • 河北住房和城乡建设厅网站卡/汕头网站建设方案维护
  • 专业做俄语网站建设/个人网站制作教程
  • wordpress前端注册/搜索引擎优化的英文缩写
  • 学校网站的作用和意义/廊坊seo关键词排名
  • 企业网站整站/汕头网站建设方案开发
  • 微山网站建设多少钱/bt搜索引擎下载
  • 网站怎么防k/百度公司简介
  • 网站域名怎么设置/长春网站开发公司
  • 汕头潮南网站建设/合肥seo整站优化
  • Wordpress 充值 卡密/资阳市网站seo
  • 秒玩大型游戏的网站/武汉大学人民医院精神科
  • 做外贸网站要有域名/深圳建站公司
  • 网站常用文件夹/源码时代培训机构官网
  • 一级a做爰片免费观看网站/百度建站官网
  • 网站开发宣传标语/百度官方网平台
  • 做图海报网站/百度交易平台
  • 做网站可以自由职业吗/网络软营销
  • 做网站如何使用特殊字体/互联网营销推广服务商
  • 如何做网站的教程视频/百度关键词优化公司
  • 国外有哪些做服装的网站有哪些/网络营销相关的岗位有哪些
  • 自己如何免费做网站/seo交流论坛
  • 新网站建设公司/seo行业岗位
  • 中国搜索提交网站/百度企业认证怎么认证
  • 第13章 文件输入/输出
  • 2106. 摘水果
  • 【代码详解】Triplane Meets Gaussian Splatting中triplane部分解析
  • 深入 Go 底层原理(三):Goroutine 的调度策略
  • NCV8402ASTT1G自保护N沟道功率MOSFET安森美/ONSEMI 过流过温保护汽车级驱动NCV8402ASTT1
  • Python 项目路径配置完全指南