并发编程一

来源:互联网 发布:中国石油进出口数据 编辑:程序博客网 时间:2024/05/17 22:25
并发编程


  一.Java中实现多线程有两种方法:继承Thread类、实现Runnable接口,在程序开发中只要是多线程,肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下优势:


    1、可以避免由于Java的单继承特性而带来的局限;


    2、增强程序的健壮性,代码能够被多个线程共享,代码与数据是独立的;


    3、适合多个相同程序代码的线程区处理同一资源的情况。
  二.java中线程中断标记 interrupt()方法把处于阻塞状态(sleep, wait, join )线程终止掉进入InterruptException中,InterruptException会清除中断标记,但是该线程被打断之后仍然向下执行
      1.只要执行了中断,碰到阻塞就会中断阻塞进入InterruptException
      2.InterruptException会把阻塞标记去除掉
      3.判断线程是否执行过中断有两个方法isInterrupted和Thread.interrupted()
      3.1 Thread.interrupted() 默认为false,会清除掉中中断线程的标记,使中断不再继续执行
      3.2 Thread.isInterrupted 默认为false  不会清除掉调用中断线程的标记


      补充
    这里补充下yield和join方法的使用。
    join方法用线程对象调用,如果在一个线程A中调用另一个线程B的join方法,线程A将会等待线程B执行完毕后再执行。
    yield可以直接用Thread类调用,yield让出CPU执行权给同等级的线程,如果没有相同级别的线程在等待CPU的执行权,则该线程继续执行。
  
0 0
原创粉丝点击