zoukankan      html  css  js  c++  java
  • JAVA多线程学习3--线程一些方法

    一、通过sleep方法睡眠

      在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)。该线程不丢失任何监视器的所属权。

    二、线程优先级

      线程具有优先级,范围为1-10。

      MAX_PRIORITY线程可以具有的最高优先级。int类型,值为10.

      MIN_PRIORITY线程可以具有的最低优先级。int类型,值为1.

      NORM_PRIORITY分配给线程的默认优先级。int类型,值为5.

      可以通过setPriority()设置线程的优先级。

    三、yield方法让出cpu

      yield方法线程高风亮节让出CPU一次。

    四、停止线程的方法

      stop()方法已经被弃用,原因是不太安全。API文档中给出了具体的详细解释。

      通过interrupted()方法打断线程。不推荐。

      通过共享变量结束run()方法,进而停止线程。如实例

    public class ThreadInterrupt {
        public static void main(String []args){
            Runner run = new Runner();
            run.start();
            try {
                Thread.sleep(10000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                
            }
            
            //run.stop();//已经废弃的方法,不建议使用,过于粗暴
            //run.interrupt(); //抛出异常,但是在异常处理中写业务显然不合适,不建议使用
            run.flag=false;//建议使用的停止线程的方法
        }
    }
    
    class  Runner extends Thread{
        boolean flag = true;
        public void run(){
        /*    while(true){
                System.out.println(new Date()+"----");
                try {
                    sleep(1000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    System.out.println("Interrupted");
                    return;
                }
            }
            */
            
            while(flag){
                System.out.println(new Date()+"----");
                try {
                    sleep(1000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    System.out.println("Interrupted");
                    return;
                }
            }
        }
    }

    五、Thread的sleep()方法与Object类的wait()方法比较

      sleep()方法使线程休眠一定时间,休眠期间线程依然拥有之前获得的锁。而wait()方法使线程处于等待,等待期间线程不再拥有之前获得的锁。当其他进程通过notify唤醒进程后,线程重新去抢资源的锁。wait()方法一般与notify()或notifyAll()方法一起出现。

  • 相关阅读:
    Servlet概述
    JAVA WEB开发环境与搭建
    Java scirpt简介
    用HTML+CSS编写一个计科院网站首页的静态网页
    CSS样式
    HTML简介
    Web服务器的原理
    静态网页与动态网页的区别
    debugger工具的使用以及调试
    javascript页面刷新的几种方法
  • 原文地址:https://www.cnblogs.com/vettel/p/3436373.html
Copyright © 2011-2022 走看看