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。

  • 相关阅读:
    Java-Android 之动画的实现
    Java-Android 之出滚动条和卷轴页面
    Java-Android 之页面的跳转和结构的搭建
    Java-Android 之Hello World
    Java-struts2 之值栈问题
    Java-Hirbernate中文乱码问题
    Java-struts2 之中文乱码问题
    SQL SERVER2005事务日志已满 解决方法
    解决:对 PInvoke 函数的调用导致堆栈不对称问题
    webclient下载文件 带进度条
  • 原文地址:https://www.cnblogs.com/Theshy/p/7574539.html
Copyright © 2011-2022 走看看