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。

  • 相关阅读:
    自己写的SqlHelper
    宿叶网思路
    phpMyAdmin教程 之 创建新用户/导入/导出数据库
    什么是主机空间?干什么用?
    转 sql注入
    xUtils
    仿360状态,类流量监控桌面浮动显示
    在Yii Framework中利用PHPMailer发送邮件(2011-06-02 14:06:23)
    MD5类库(hex_md5)
    MYSQL的随机查询的实现方法
  • 原文地址:https://www.cnblogs.com/Theshy/p/7574539.html
Copyright © 2011-2022 走看看