zoukankan      html  css  js  c++  java
  • java 控制线程

    join方法:调用join方法的线程对象强制运行,该线程强制运行期间,其他线程无法运行,必须等到该线程结束后其他线程才可以运行。

    有人也把这种方式成为联合线程

    join方法的重载方法:

    join(long millis):

    join(long millis,int nanos):

    通常很少使用第三个方法:

    程序无须精确到一纳秒;

    计算机硬件和操作系统也无法精确到一纳秒;

    Eg:

    package july7;

    class MyThreadDemo implements Runnable{

        @Override

        public void run() {

            for (int i = 0; i < 50; i++) {

                System.out.println(Thread.currentThread().getName()+"正在运行!"+i);

                if(i == 25){

                    try {

                        new Thread(new MyThreadDemo(),"刘昭").join();

                    } catch (InterruptedException e) {

                        e.printStackTrace();

                    }

                }

            }

        }

    }

    public class DemoRe10 {

        public static void main(String[] args) {

           

            new Thread(new MyThreadDemo(),"刘昭").start();

            new Thread(new MyThreadDemo(),"章泽天").start();

        }

    }

    Daemon

    后台线程:处于后台运行,任务是为其他线程提供服务。也称为“守护线程”或“精灵线程”。JVM的垃圾回收就是典型的后台线程。

    特点:若所有的前台线程都死亡,后台线程自动死亡。

    设置后台线程:Thread对象setDaemon(true);

    setDaemon(true)必须在start()调用前。否则出现IllegalThreadStateException异常;

    前台线程创建的线程默认是前台线程;

    判断是否是后台线程:使用Thread对象的isDaemon()方法;

    并且当且仅当创建线程是后台线程时,新线程才是后台线程。

    sleep

    线程休眠:

    让执行的线程暂停一段时间,进入阻塞状态。

    sleep(long milllis) throws InterruptedException:毫秒

    sleep(long millis,int nanos)

                  throws    InterruptedException:毫秒,纳秒

    调用sleep()后,在指定时间段之内,该线程不会获得执行的机会。

    控制线程之优先级

    每个线程都有优先级,优先级的高低只和线程获得执行机会的次数多少有关。

    并非线程优先级越高的就一定先执行,哪个线程的先运行取决于CPU的调度;

    默认情况下main线程具有普通的优先级,而它创建的线程也具有普通优先级。

    Thread对象的setPriority(int x)和getPriority()来设置和获得优先级。

    MAX_PRIORITY  :      值是10

    MIN_PRIORITY    :      值是1

    NORM_PRIORITY       :      值是5(主方法默认优先级)

    yield

    线程礼让:

    暂停当前正在执行的线程对象,并执行其他线程;

    Thread的静态方法,可以是当前线程暂停,但是不会阻塞该线程,而是进入就绪状态。所以完全有可能:某个线程调用了yield()之后,线程调度器又把他调度出来重新执行。

    我的总结:用到时查询api!

  • 相关阅读:
    WPF换肤之八:创建3D浏览效果
    ADPlus
    由INotifyPropertyChanged,BindingList绑定引发的跨线程异常及其解决办法
    无服务器端的UDP群聊功能剖析(重构版本)
    A Short Guide to DBI[转]
    绑定到异步的ObservableCollection
    使用反射+缓存+委托,实现一个不同对象之间同名同类型属性值的快速拷贝
    ORM查询语言(OQL)简介概念篇
    无需重新编译代码,在线修改表单
    LJMM平台( Linux +Jexus+MySQL+mono) 上使用MySQL的简单总结
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11132343.html
Copyright © 2011-2022 走看看