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

  

你可能感兴趣的:(JAVA学习,java,thread,活动,join,多线程,string)