zoukankan      html  css  js  c++  java
  • java核心学习(二十二) 多线程---线程控制

      java的线程支持提供了一些便捷的工具方法,可以用来控制线程的执行

    一、join线程

      当前线程可在执行体里面调用其他线程的join方法,调用后当前线程阻塞,直到被join()方法加入的join线程执行完为止。

      join方法通常由使用线程的程序调用,将大问题划分成许多小问题,每个小问题分配一个线程,当所有小问题都得到处理后,再调用主线程来进一步操作。

      下面试一下

      

    package ThreadTest;
    
    public class JoinThread extends Thread{
        //提供带线程名字的构造器
        public JoinThread(String name)
        {
            super(name);
        }
        public void run(){
            for(int i = 0;i<100;i++){
                System.out.println(getName() + " "+ i);
            }
        }
        public static void main(String[] args)throws Exception{
            new JoinThread("新线程").start();
            for(int i = 0;i<100;i++){
                if(i == 20){
                    JoinThread jt = new JoinThread("被调用join的线程");
                    jt.start();
                    jt.join();
                }
                System.out.println(Thread.currentThread().getName() + " " + i);
            }
        }
    }

        join方法还可以设置时间参数表示主线程最多阻塞多长时间。

    二、后台线程(Daemon Thread)

      调用Thread对象的setDaemon(true)方法可以将指定线程设置成后台线程,当一个程序所有前台线程都死亡(结束了),后台线程也会退出,虚拟机也就退出了

      setDaemon(true) 方法要在start之前调用,否则引发异常。

    三、线程睡眠 :sleep

      当调用Thread类的静态sleep方法时,会使当前线程进入阻塞态,可以传入一个时间参数表示阻塞多久。

    四、线程让步:yield

      这也是一个静态方法,会是当前线程进入就绪态重新参与调度。

    五、改变线程优先级

      Thread实例的setPriority(int newPriority)、getPriority()方法来设置和返回现成的优先级

      使用静态常量为线程指定优先级 Thread.MAX_PRIORITY、Thread.MIN_PRIORITY、Thread.NORM_PRIORITY。

  • 相关阅读:
    Mac os下安装pycurl
    Mac os 10.9下面配置JAVA_HOME
    同步,异步,阻塞,非阻塞
    Python处理XML
    Apriori算法在购物篮分析中的运用
    Python抓取双色球数据
    为什么这么多Python框架
    Caffe + Ubuntu 14.04 64bit + CUDA 6.5 配置说明
    ubuntu 开机自动挂载分区
    VIM 配置随手记
  • 原文地址:https://www.cnblogs.com/Theshy/p/7574539.html
Copyright © 2011-2022 走看看