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

西安网站建设公司有哪些网站优化的监测评价

西安网站建设公司有哪些,网站优化的监测评价,页面紧急情况访问升级跳拿笔记,泾川建设路网站目录 一、创建线程 1.继承 Thread 类 2. 实现 Runnable 接口 3.匿名内部类创建 Thread 子类对象 4. 匿名内部类创建 Runnable 子类对象 5. lambda 表达式创建 Runnable 子类对象 二、Thread 类及常见方法 2.1 Thread 的常见构造方法 2.2 Thread 的几个常见属性 2.3 启…目录 一、创建线程 1.继承 Thread 类 2. 实现 Runnable 接口 3.匿名内部类创建 Thread 子类对象 4. 匿名内部类创建 Runnable 子类对象 5. lambda 表达式创建 Runnable 子类对象 二、Thread 类及常见方法  2.1 Thread 的常见构造方法 2.2 Thread 的几个常见属性 2.3 启动一个线程-start() 2.4 中断一个线程   2.5 等待一个线程-join() 三. 线程的状态 若想了解线程的基本概念请参照另一篇博文 进程和线程  一、创建线程 1.继承 Thread 类 1) 继承 Thread 来创建一个线程类 . class MyThread extends Thread {Overridepublic void run() {System.out.println(这里是线程运行的代码);} } 2) 创建 MyThread 类的实例 Thread t new MyThread();3) 调用 start 方法启动线程 t.start(); // 线程开始运行 2. 实现 Runnable 接口 1)通过 类 实现 Runnable 接口重写run方法Runnable 接口表示一个“可执行的任务”交给线程来使用。 class MyRunnable implements Runnable {Overridepublic void run() {System.out.println(这里是线程运行的代码);} } 2) 创建 Thread 类实例, 调用 Thread 的构造方法时将 Runnable 对象作为 target 参数. Thread t new Thread(new MyRunnable()); //或者Runnable runnable new MyRunnable();Thread t new Thread(runnable); 3) 调用 start 方法 t.start(); // 线程开始运行 对比上面两种方法: 继承 Thread 类, 直接使用 this 就表示当前线程对象的引用. 实现 Runnable 接口, this 表示的是 MyRunnable 的引用. 需要使用 Thread.currentThread()当前线程实例对象。 3.匿名内部类创建 Thread 子类对象 在创建Thread类的对象时使用匿名内部类并重写方法。 public static void main(String[] args) {Thread t new Thread() {Overridepublic void run() {while (true) {System.out.println(hello thread);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}};t.start(); } 4. 匿名内部类创建 Runnable 子类对象 public static void main(String[] args) { Thread t new Thread(new Runnable() {Overridepublic void run() {while (true) {System.out.println(hello thread);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}});t.start(); } 5. lambda 表达式创建 Runnable 子类对象 该方法是最简便创建线程的方法 lambda 表达式本质上是一个函数式接口一个接口中只有一个抽象方法自身就是run方法表示逻辑。             lambda 表达式可以理解为匿名内部类的简化实际上为创建了一个类实现接口并重写方法。 //eg: (函数式接口参数- 表达式 / {代码块};public static void main(String[] args) {Thread t new Thread(() - {while (true) {System.out.println(hello thread);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}});t.start(); } 二、Thread 类及常见方法  Thread 类是 JVM 用来管理线程的一个类换句话说每个线程都有一个唯一的 Thread 对象与之关联。         Thread 类的对象就是用来描述一个线程执行流的JVM 会将这些 Thread 对象组织起来用于线程调度线程管理。 2.1 Thread 的常见构造方法 Thread t1 new Thread(); Thread t2 new Thread(new MyRunnable()); Thread t3 new Thread(这是我的名字); Thread t4 new Thread(new MyRunnable(), 这是我的名字); 2.2 Thread 的几个常见属性 getId() ID 是线程的唯一标识不同线程不会重复 getName(名称是各种调试工具用到 getState(状态表示线程当前所处的一个情况下面我们会进一步说明 getPriority(优先级高的线程理论上来说更容易被调度到 isDaemon() 关于后台线程需要记住一点JVM会在一个进程的所有非后台线程结束后才会结束运行。 isAlive() 是否存活即简单的理解为 run 方法是否运行结束了isInterrupted() 线程中断。 Thread.currentThread()返回当前线程实例对象。 public class ThreadDemo {public static void main(String[] args) {Thread thread new Thread(() - {for (int i 0; i 10; i) {try {System.out.println(Thread.currentThread().getName() : 我还 活着);Thread.sleep(1 * 1000);} catch (InterruptedException e) {e.printStackTrace();}}System.out.println(Thread.currentThread().getName() : 我即将死去);});System.out.println(Thread.currentThread().getName() : ID: thread.getId());System.out.println(Thread.currentThread().getName() : 名称: thread.getName());System.out.println(Thread.currentThread().getName() : 状态: thread.getState());System.out.println(Thread.currentThread().getName() : 优先级: thread.getPriority());System.out.println(Thread.currentThread().getName() : 后台线程: thread.isDaemon());System.out.println(Thread.currentThread().getName() : 活着: thread.isAlive());System.out.println(Thread.currentThread().getName() : 被中断: thread.isInterrupted());thread.start();while (thread.isAlive()) {}System.out.println(Thread.currentThread().getName() : 状态: thread.getState());} } 2.3 启动一个线程-start() 之前我们已经看到了如何通过覆写 run 方法创建一个线程对象但线程对象被创建出来并不意味着线程就开始运行了。         start内部是会调用到系统api在系统内核中创建线程         run单纯描述了该线程要执行什么工作。         本质区别 在于是否在系统内核中创建了一个线程。 2.4 中断一个线程   interrupt中断让一个线程停止运行run方法 目前常见的有以下两种方式 通过共享的标记来进行沟通,手动设置标志位。调用 interrupt() 方法来通知Thread 内部包含了一个 boolean 类型的变量作为线程是否被中断的标记.使用 Thread.interrupted() 或者 Thread.currentThread().isInterrupted() 代替自定义标志位。 thread 收到通知的方式有两种 1. 如果线程因为调用 wait/join/sleep 等方法而阻塞挂起则以 InterruptedException 异常的形式通知清除中断标志 当出现 InterruptedException 的时候, 要不要结束线程取决于 catch 中代码的写法. 可以选择忽略这个异常, 也可以跳出循环结束线程. 2. 否则只是内部的一个中断标志被设置 thread 可以通过 Thread.interrupted() 判断当前线程的中断标志被设置清除中断标志 Thread.currentThread().isInterrupted() 判断指定线程的中断标志被设置不清除中断标志 这种方式通知收到的更及时即使线程正在 sleep 也可以马上收到。 如下代码就是第一种 因为调用 wait/join/sleep 等方法而阻塞挂起则以 InterruptedException 异常的形式通知清除中断标志所以线程run并没有结束可以抛出异常break解决。 package thread;// 线程终止 public class Demo9 {public static void main(String[] args) {Thread t new Thread(() - {// Thread 类内部, 有一个现成的标志位, 可以用来判定当前的循环是否要结束.while (!Thread.currentThread().isInterrupted()) {System.out.println(线程工作中);try {Thread.sleep(1000);} catch (InterruptedException e) {// 1. 假装没听见, 循环继续正常执行.e.printStackTrace();// 2. 加上一个 break, 表示让线程立即结束.// break;// 3. 做一些其他工作, 完成之后再结束.// 其他工作的代码放到这里.break;}}});t.start();try {Thread.sleep(5000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(让 t 线程终止. );t.interrupt();} }2.5 等待一个线程-join() 有时我们需要等待一个线程完成它的工作后才能进行自己的下一步工作。这时我们需要一个方法明确等待线程的结束。                  主线程中调用t.join() 主线程等待 t 线程先结束。 三. 线程的状态 线程的状态是一个枚举类型 Thread.State public class ThreadState {public static void main(String[] args) {for (Thread.State state : Thread.State.values()) {System.out.println(state);}} } NEW: 安排了工作, 还未开始行动 RUNNABLE: 可工作的. 又可以分成正在工作中和即将开始工作. BLOCKED: 这几个都表示排队等着其他事情 WAITING: 这几个都表示排队等着其他事情 TIMED_WAITING: 这几个都表示排队等着其他事情 TERMINATED: 工作完成了. //示例 package thread;public class Demo12 {public static void main(String[] args) throws InterruptedException {Thread t new Thread(() - {while (true) {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}});// 在调用 start 之前获取状态, 此时就是 NEW 状态System.out.println(t.getState());t.start();for (int i 0; i 5; i) {System.out.println(t.getState());Thread.sleep(1000);}t.join();// 在线程执行结束之后, 获取线程的状态, 此时是 TERMINATED 状态System.out.println(t.getState());} }结语Thread类及常见方法的相关分享到这里就结束了希望对大家的学习会有帮助如果大家有什么问题或者不同的见解欢迎大家评论区的留言 感谢支持
http://www.zqtcl.cn/news/839043/

相关文章:

  • 哪个网站可以做销售记录仪中国电子商务中心官网
  • 学校网站建设厂家云上铺会员管理系统
  • 手机网站源码大全空间设计公司
  • 公司做哪个网站比较好招聘网站企业招聘怎么做
  • 北仑网站推广用c 做网站
  • 做网站怎么赚钱 注册网站环境配置
  • 阿里企业网站建设重庆移动网站制作
  • 织梦 网站栏目管理 很慢北票市建设工程安全管理站网站
  • 天津网站建设方案托管网站风格对比信息表
  • 如何做美发店网站wordpress会员登录查询
  • 建设外贸国外站点网站商业网站设计制作公司
  • 长沙哪个公司做网站优化seo多少钱
  • html基础标签昆明做网站优化哪家好
  • 网站制作公司全域营销获客公司wordpress+用户组
  • 中文网站建设工具WordPress相册插件pro
  • 网站建设收获与不足站中站网站案例
  • 做运营必看的网站今天重大新闻2022
  • seo网站开发注意事项广州网站建设制作价格
  • 禅城南庄网站制作做门户网站的公司
  • 网站里的图片是怎么做的同泰公司网站公司查询
  • seo怎么做网站内容wordpress文件上传失败
  • zenm自己做网站wordpress 摄影 模板
  • 网站手机页面如何做微信小程序开发平台官网登录
  • 嘉兴外贸网站制作成都网络公司最新招聘
  • 租服务器发布网站团购网站单页模板
  • 西安网站建设运维凡客精选
  • 权威网站发布平台wordpress 如何安装
  • 没有官方网站怎么做seo优化军事新闻
  • 在招聘网站做销售技巧教育培训平台
  • 网站栏目 英文做网站在哪接单