zoukankan      html  css  js  c++  java
  • 14 线程状态

    package thread;
    
    public class TestOne {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    
            method();
        }
        
        /**
         * 一个任务被称为一个线程,同时运行一个以上的任务被称为多线程。
         * 
         * 1.使线程休眠 sleep
         * 
         * 2.启动线程start
         *  不要直接用Thread的start方法,创建一个线程池,不必为每个任务开启一个线程
         *  不要直接调用 Thread方法和Runnable的run方法,只会执行同一线程中的任务,不会开启一个新线程。
         * 
         * 3.中断线程
         *   没有方法可以强制线程中断, interrupt 可以请求线程中断,调用interrupt方法是线程的中断状态将被置位。
         *   
         *   void interrupt() 向线程发送请求,将线程的中断状态置为true
         *   
         *    public boolean isInterrupted() {} 测试当前线程是否被中断。 会将当前线程的中断状态置为false
         *     
         *    public static native Thread currentThread(); 返回当前线程对象 
         *        
         */
    
        public static void method(){
    //        Thread.currentThread().isInterrupted();
            Thread.currentThread().interrupt();
            System.out.println(Thread.currentThread().isInterrupted());
        }
    
    }
    package thread;
    
    public class TestTwo {
    
        /**
         * 线程状态
         * 
         * 线程可以有6种状态:
         * New (新创建)
         * Runnable(可运行)
         * Blocked(被阻塞)
         * waiting(等待)
         * Timed waiting(计时等待)
         * Terminated(被终止)
         * 
         * 
         * 新创建线程
         * new Thread(r)
         * 
         * 可运行线程
         * 可能正在运行,也可能没有运行
         * 抢占式调度系统:给每个可运行线程一个时间片来执行任务,时间片用完,剥夺线程的运行权,给另外一个线程运行机会。
         * 
         * 被阻塞线程和等待线程
         * 每个线程视图获取对象的内部锁,当锁被其他线程持有的时候,则该线程处于阻塞状态。
         * 直到所有线程释放内部锁,线程调度器允许本线程持有它时,线程处于非阻塞状态。
         * 
         * 等待状态:当前线程等待另外一个线程通知调度器一个条件时,自身进入等待状态。
         * 计时等待:有几个方法具有超时参数,调用它,导致线程进入计时等待。
         * 
         * 被终止的线程
         * 有2个原因导致线程被终止:
         * 1)run方法正常退出而自然死亡
         * 2)因为一个没有捕获的异常终止了run方法
         * 
         * join() 等待终止指定的线程
         * 
         * Thread.currentThread().getState() 获取当前线程的状态
         */
        
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            try {
                System.out.println(Thread.currentThread().getState()); 
                Thread.currentThread().join();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        
    }

     

  • 相关阅读:
    AngularJS 简介
    Java基础知识学习(九)
    Java基础知识学习(八)
    算法(二)
    Java基础知识学习(七)
    Java基础知识学习(六)
    Java基础知识学习(五)
    Java基础知识学习(四)
    Java基础知识学习(三)
    Java基础知识学习(二)
  • 原文地址:https://www.cnblogs.com/lxh520/p/8443825.html
Copyright © 2011-2022 走看看