博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 控制线程
阅读量:5040 次
发布时间:2019-06-12

本文共 1538 字,大约阅读时间需要 5 分钟。

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!

转载于:https://www.cnblogs.com/fanweisheng/p/11132343.html

你可能感兴趣的文章
UpdatePanel 内控件 更新“外的”控件【转】
查看>>
mybatis中&gt;=和&lt;=的实现方式
查看>>
Python面向对象03/继承
查看>>
java序列化和反序列化
查看>>
绝对定位
查看>>
flink源码编译(windows环境)
查看>>
dpkg 删除 百度网盘 程序
查看>>
服务器nginx安装
查看>>
std::nothrow
查看>>
rest-framework 分页器
查看>>
JQuery(一)安装&选择器 样式篇
查看>>
浏览器的DNS缓存查看和清除
查看>>
浏览器跨域问题
查看>>
HTML5 input控件 placeholder属性
查看>>
使用JAVA如何对图片进行格式检查以及安全检查处理
查看>>
html5实现移动端下拉刷新(原理和代码)
查看>>
iPhone开发中从一个视图跳到另一个视图有三种方法:
查看>>
pytho logging
查看>>
一个Java程序员应该掌握的10项技能
查看>>
c#英文大小写快捷键
查看>>