zoukankan      html  css  js  c++  java
  • java线程简要

    多线程
     
     
     实现Runnable 接口的类就可以成为线程,Thread类就是因为实现了Runnable接口所以才具有了线程的功能
     Runnable接口只有一个方法就是run()方法,实现Runnable()接口就必须实现run()方法
     
     Thread类的构造方法:
         Thread thread=new Thread();
    Thread thread=new Thread(Runnable simple);
    Thread thread=new Thread("ThreadName");
    Thread thread new Thread(Runnable simple,String name);
     
     
     线程主要有四种状态:
       创建
       可执行
       非可执行
       消亡
       
       当实例化一个Thread对象并执行start()方法后,线程进入“可执行”状态。
       一个线程进入“可执行”状态,并不代表突然可以一直执行到run()结束为止。实际上它可能正在等待取得CPU时间
       也就是等候权限,这由优先级决定。
       
       当线程离开“可执行”状态进入等待队列是,线程进入“非可执行”状态。可以用Thread中的wait(),sleep()达到这个目的。
       当Thread类的start()方法在程序中被调用时,Java须立即自动调用它的run()方法。当run()方法执行完后,改Thread会自动消亡。
       
       java语言中优先级分1~10,默认为5;可以使用Thread类中的setPriority()方法来设定线程的优先级,但必须在1~10之内,否则会出现
       异常。
       优先级较高的线程会被提前执行,当它执行完毕才会轮到优先级较低的线程执行。如果优先级相同,那么就采用轮流执行的方式。
       
       乳沟需要一个线程礼让一其他线程,可以使用Thread类中的yield()方法。
       
       线程的控制:
           线程的 启动
          挂起
        状态检查
    正确结束
    一个新的线程被创建后处于初始状态,实际上并没有立即进入运行状态,而是出于就绪状态,当轮到这个线程执行的时候,
    就开始执行线程run()方法中的代码。执行run()方法是通过调用Thread类中start()方法来实现的。
    调用start()方法启动线程的run()方法不同于一般的调用方法。一般方法必须
    等到被调用方法执行完毕才能够返回。
    而调用线程的start()方法后,start()方法告诉系统该线程准备就绪并可以启动run()方法后
    就返回并继续执行调用start()方法下面的语句。这时run()方法可能还在运行。
    线程进入“非可执行状态”:
      1.调用sleep()方法是县城进入休眠状态;
       2.通过调用join()方法使线程挂起,如果线程A调用线程B的join()方法,那么线程A将被挂起,直到线程B执行完毕为止;
     3.通过调用wait()方法使线程挂起,知道线程得到了notify()和notifyAll()消息,线程才会进入
     “可执行”状态
     
    sleep()方法:
        Thread.sleep(long millis) millis 必选参数,该参数以毫秒为单位设置线程的休眠时间。
    执行该方法后,当前线程将休眠指定的时间段,如果任何一个线程中断了当前线程的休眠,该方法将抛出
    InterruptedException异常对象,所以在使用sleep()方法是,必须捕获该异常
     
    对于处于未知状态下的线程,可以通过  isAlive()方法来确定一个线程是否认出在活动状态。当然即使处于活动状态的线程
    也并不意味着这个线程一定正在运行,对于一个一开始运行但还没有完成任务的线程,这个方法返回true
    isAlive() 方法用于测试线程是否处于活动状态。如果线程已经启动且尚未终止,则为活动状态。
    使用Thread类中的setDaemon()方法来设置一个线程为后台线程。但注意的是,必须在线程启动之前调用setDaemon()方法
    ,这样才能将这个线程设置为后台线程。
    语法格式:thread.setDaemon(boolean on)
         thread:Thread Object
     on:如果这个参数为true,则将该线程标记为后台线程
    使用Thread类中的isDaemon()方法来判断线程是否是后台线程
        thread.isDaemon()
    线程同步:
         关键字synchronized

      

  • 相关阅读:
    修改ssh默认端口
    网络配置
    nginx 反向代理
    nginx web 服务
    小白日记22:kali渗透测试之提权(二)--抓包嗅探
    小白日记21:kali渗透测试之提权(一)--本地提权
    小白日记20:kali渗透测试之后渗透测试阶段(一)--上传工具
    小白日记19:kali渗透测试之选择和修改EXP
    小白日记18:kali渗透测试之缓冲区溢出实例(二)--Linux,穿越火线1.9.0
    小白日记17:kali渗透测试之缓冲区溢出实例-windows,POP3,SLmail
  • 原文地址:https://www.cnblogs.com/immortalBlog/p/14698824.html
Copyright © 2011-2022 走看看