经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
线程的基本操作(一)
来源:cnblogs  作者:HALAZI  时间:2018/10/31 9:09:07  对本文有异议

线程的状态

  线程的所有状态在Thread中的State枚举中定义
        public enum State{
            NEW,            //刚刚新建的线程,还没有开始执行
            RUNNABLE,        //执行时的状态
            BLOCKED,        //在执行过程中遇到synchronized同步块,进入blocked阻塞状态,暂停执行,直到获得请求的锁
            WAITING,        //无时间限制的等待,通过wating()方法等待的线程在等待notify()方法,而通过join()方法等待的线程则会等待目标线程终止
            TIMED_WAITING,    //有时限的等待
            TERMINATED;        //线程执行完毕,进入terminated在状态,表示结束
        }

新建线程

  新建线程有两种方式  
        1.继承Thread类  
            class ThreadDemo extends Thread{
                //重写run()方法
                public void run(){};
            }
            Thread t1 = new ThreadDemo();
            t1.start();//启动线程
        2.实现Runnable接口
            class ThreadDemo implements Runnable{
                //重写run()方法
                public void run(){};
            }
            Thread t1 = new Thread(new ThreadDemo());//通过Thread的构造函数 新建线程
            t1.start();//启动线程


   run()和start()的区别:run()方法中需要写的是线程将要执行的逻辑,就是我要做什么;start()方法表示启动线程,就是我要开始了。

终止线程

  stop()方法(已被废弃),该方法的执行会终止线程并释放锁,而锁是用来维持对象一致性的,如果写线程刚写一半的时候执行了stop(),释放了锁,读线程读到的数据就有问题了

线程中断

  不同于stop()方法,Thread.interrupt()方法不会立即终止线程,而是设置一个中断标志 告诉线程‘有人希望你退出了’,中断相关方法有
          public void Thread.interrupt();            //实例方法,中断线程
          public boolean Thread.isInterrupted();        //实例方法,判断是否被中断
          public static boolean Thread.interrupted()    //静态方法,判断是否被中断,并清除当前中断状态


  Thread.sleep()方法会让当前线程休眠,它会抛出一个InterruptedException中断异常,非运行时异常,必须捕获;

  Thread.sleep()方法由于中断而抛出异常时,会清除中断标记

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号