线程控制

一、线程休眠

  使用的方法:public static void sleep(long millis):让正在执行的线程休眠millis毫秒

  public static void sleep(long millis , int nanos):让正在执行的线程休眠millis毫秒加nanos纳秒

public class Test implements Runnable{

    private String res = "test";
    public void run(){
        try {
            // 休眠1s
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.print(res);
    }
}

二、线程加入

  使用的方法:public void join():等待该线程终止

  当对线程对象调用此方法时,只有当该线程执行完毕后其他线程才可以执行。

public static void main(String[] args) {
        Test t = new Test();

        Thread t1 = new Thread(t);
        Thread t2 = new Thread(t);

        try {
            t1.join();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        t1.start();
        // t1执行完t2才执行
        t2.start();
    }

三、线程礼让

  使用的方法:public static void yield():暂停当前正在执行的线程,执行其他线程

public class Runable1Demo implements Runnable{

    public void run() {
        Thread.yield();
        System.out.println(Thread.currentThread().getName());
    }

}

四、守护线程

  使用的方法:public void setDaemon(boolean on):将该线程标记为守护线程或者是用户线程,on如果为true标记为守护线程。守护线程会在用户线程结束后被迫结束而不管有没有运行完,可以理解为守护线程守护服务于用户线程。

  

public static void main(String[] args) {
        Test t = new Test();

        Thread t1 = new Thread(t);
        Thread t2 = new Thread(t);

        t1.setDaemon(true);

        t1.start();
        t2.start();
    }

五、中断线程

  使用的方法:public void interrupt():中断线程。如果线程在调用Object类的wait()、wait(long)或wait(long ,int)方法,或者该类的join()、join(long)、join(long,int)、sleep(long)\sleep(long,int)方法中受阻,则其中断状态被清除,它还将收到一个InterruptException。

时间: 2024-10-18 06:59:12

线程控制的相关文章

线程控制与分离

线程: 在一个进程的地址空间中执行多个线程 ---- 强调共享  线程是进程中的一个实体. 线程私有: 线程id 上下文信息 (包括各种寄存器的值.程序计数器和栈指针) (私有)栈空间    errno变量    信号屏蔽字    调度优先级 此时:POSIX标准   编译时  加上 -lpthread 线程与进程的区别: 1.进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位: 线程是进程的一个实体. 2.进程 强调 独占,线程 强调 共享

线程基础--线程控制

3.  线程控制 1). 线程属性 目标:可以设置 线程的 detached/join 状态,线程栈的大小和最低地址等属性. detached/join 状态的区别: 当线程处于 分离状态(detached)时,线程结束时,os立即回收资源.主线程不可以调用pthread_join获取线程退出时的返回值. 当线程处于 未分离状态(join)时,线程结束时,主线程 调用pthread_join获取线程退出时的返回值, 随后释放该线程资源. a)数据类型 pthread_attr_t b)初始化及释

Linux/UNIX线程控制

线程控制 线程属性 调用pthread_create函数的例子中,传入的参数都是空指针,而不是指向pthread_attr_t结果的指针.可以用pthread_attr_t结构修改线程默认属性,并把这些属性与创建的线程联系起来.可以使用pthread_attr_init函数初始化pthreaad_attr_t结构.调用pthread_attr_init以后,pthread_attr_t结构所包含的内容就是操作系统实现支持的线程所有属性的默认值.如果要修改其中个别属性的值,需要调用其他的函数.pt

linux线程控制&线程分离

线程概念 线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元. 线程是程序中一个单一的顺序控制流程.进程内一个相对独立的.可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位.在单个程序中同时运行多个线程完成不同的工作,称为多线程. 线程资源 由于一个程序中的多个线程共享同一地址空间,因此代码段,数据段内容是共享的.除此之外,以下内容也是共享的: 1. 文件描述符表2. 每种信号的处理方式(SIG_IGN.SIG_DFL

RX系列五 | Schedulers线程控制

RX系列五 | Schedulers线程控制 在我们上一篇文章中的,我们的小例子里有这么一段代码 //网络访问 .observeOn(Schedulers.io()) 事实上,我们在使用网络操作的时候,便可以控制其运行在哪个线程中,而Schedulers类,有四个方法,分别是 Schedulers.immediate(); Schedulers.newthread(); Schedulers.io(); Schedulers.computation(); 以及RxAndroid中的Android

Windows线程控制

多线程无疑带来了很多方便,提高了很多开发效率,但是同时也带来了很多问题. 举个栗子: DWORD WINAPI ThreadProc(LPVOID lPParameter); int m = 0; int n = 0; int main(int argc, TCHAR* argv[], TCHAR* envp[]) { HANDLE hThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadProc,NULL,0,NULL); int

线程与线程控制

原文链接:http://www.orlion.ga/1250/ 一.线程 同一进程的多个线程共享同一地址空间,因此Text Segment.Data Segment都是共享的,如果定义一个函数,在个线程中都可以调用,如果定义一个全局变量,在各线程中都可以访问到,除此之外,个线程还共享一下进程资源和环境: 文件描述符 每种信号的处理方式(SIG_IGN.SIG_DFL或者自定义的信号处理函数) 当前工作目录 用户id和组id 但有些资源使每个线程各有一份的: 线程id 上下文,包括各种寄存器的值.

JAVA线程控制

可以通过线程的方法进行基本的线程控制,除了已知的start.run.sleep方法外还有isAlive.currentThread.interrupt方法. isAlive:该方法用来测试线程是否处于活动状态.线程由start方法启动后,直至被终止之间的任何时刻都处于Alive状态.当处于新建状态和死亡状态时,该方法返回false. currentThread:该方法是Thread类的的类方法,返回正在使用CPU资源的线程. interrupt:当线程处于休眠状态时,一个占有CPU资源的线程可以

Java中的线程状态转换和线程控制常用方法

Java 中的线程状态转换: [注]:不是 start 之后就立刻开始执行, 只是就绪了(CPU 可能正在运行其他的线程). [注]:只有被 CPU 调度之后,线程才开始执行, 当 CPU 分配给你的时间片到了, 又回到就绪状态, 继续排队等候. 线程控制的基本方法: isAlive(): 判断线程是否还活着, start 之后,终止之前都是活的; getPriority(): 获得线程的优先级数值; setPriority(): 设置线程的优先级数值(线程室友优先级别的);   Thread.

RxJava 教程-1 简介 原理 线程控制 变换

简介 RxJava 是什么? RxJava 在 GitHub 主页上的自我介绍是 RxJava is a Java VM implementation of ReactiveX: a library for composing asynchronous and event-based programs by using observable sequences. RxJava是 ReactiveX 在JVM上的一个实现:一个使用可观测的序列(observable sequences)来组成(co