精华内容
下载资源
问答
  • Thread类的常用方法: 1.start():启动线程并执行相应的run()方法 2.run():子线程要执行的代码放入run()方法中 3.currentThread():获取当前的线程 //静态方法 4.getName():获取子线程的名称 5.setName():设置子线程的...

    Thread类的常用方法:

    1.start():启动线程并执行相应的run()方法

    2.run():子线程要执行的代码放入run()方法中

    3.currentThread():获取当前的线程 //静态方法

    4.getName():获取子线程的名称

    5.setName():设置子线程的名称

    6.yield():调用此方法的线程释放当前CPU的执行权

    7.join():在子线程1中调用线程2的join()方法,表示当执行到此方法时,线程1停止执行(阻塞)

    8.sleep(long l):显示让当前线程睡眠(毫秒 1s = 1000ms)

    9.isAlive():判断当前线程是否存活

    10.getPriority():获取优先级,默认是5,最小是1,最大是10

    11.setPriority():改变线程的优先级

    12.线程通信的方法:
    wait():等待
    notify():唤醒等待的线程
    notifyAll():唤醒所有等待的线程

    展开全文
  • JavaThread类的方法简介

    万次阅读 2018-06-05 17:37:48
    如果直接调用run()方法,该方法也会执行,但会被当做一个普通的方法,在当前线程中顺序执行;而如果使用start()方法,则会创建一个新的线程执行run()方法。 2.线程中断 public void interrupt(); public boole.....

    1.新建线程

    Thread t1 = new Thread();
    t1.start();

    新建线程,应该调用start()方法启动线程;如果直接调用run()方法,该方法也会执行,但会被当做一个普通的方法,在当前线程中顺序执行;而如果使用start()方法,则会创建一个新的线程执行run()方法。

    2.线程中断

    public void interrupt();
    public boolean isInterrupted();
    public static boolean interrupted();

    三个方法很相似,线程中断只是通知目标线程有人希望你退出,而并不是使目标线程退出。
    第一个方法是通知目标线程中断,即设置目标线称的中断标志位;
    第二个方法判断当前线程是否被中断,如果被中断(即中断标志位被设置),则返回true,否则返回false;
    第三个方法判断当前线程的中断状态,并清除该线程的中断标志位(也就意味着,如果连续调用两次该方法,并且中间没有再次设置中断标志位,第二次会返回false,因为中断标志位已经被清除)。

    public static native void sleep(long millis) throws InterruptedException;

    sleep()方法会将当前线程休眠若干ms,如果在休眠期间被调用interrupt()方法,则会抛出InterruptedException异常。如下:

    public class TestThread implements Runnable{
        @Override
        public void run() {
            while(true) {
                if(Thread.currentThread().isInterrupted()){ //如果当前线程已经被设置了中断标志位,则返回true
                    System.out.println("Interrupted");
                    break;
                }
    
                try {
                    Thread.currentThread().sleep(1000);
                } catch (InterruptedException e) {
                    System.out.println("Interruted when sleep!");
                    Thread.currentThread().interrupt(); //Thread.sleep()方法由于中断而抛出异常,此时,它会清除中断标记;
                }
    
                Thread.yield();
            }
        }
    
        public static void main(String[] args){
            Thread t1 = new Thread(new TestThread());
            t1.start();
    
            t1.interrupt(); //设置目标线程的中断标志位,中断标志位表示当前线程已经被中断了
        }
    }

    3.等待(wait)和通知(notify)

    public final void wait() throws InterruptedException;
    public final native void notify();
    public final native void notifyAll();

    obj.wait()是设置当前线程在该对象上等待,直到有线程调用obj.notify()方法(或notifyAll()方法)。当调用wait()方法后,该线程会进入一个等待队列,等待队列中可能有多个线程,notify()会随机唤醒其中一个线程,而notifyAll()会唤醒所有线程。
    wait()和notify()方法必须在sychronized代码块中,调用这些方法时都需要先获得目标对象的一个监视器,然后调用这些方法时会释放监视器
    与sleep不同的是,sleep()会一直占有所持有的锁,而wait()会释放锁。

    4.等待线程(join)和谦让(yield)

    public final void join() throws InterruptedException;
    public static native void yield();

    如果一个线程的执行需要另一个线程的参与(比如当前线程执行需要另一个线程执行完毕才能继续执行),这时候可以调用join()方法。t1.join()方法表示等待线程t1执行完毕之后,当前线程再继续执行。当然也可以给join()设置时间参数。
    注:join()的本质是让调用线程wait()在当前线程对象实例上,其部分源码如下:

    while (isAlive()) {
       wait(0);
    }

    当线程执行完毕后,它会让被等待的线程在退出前调用notifyAll()通知所有等待的线程继续执行。因此不要在Thread对象实例上使用类似wait()或者notify()等方法。
    yield()方法是使当前线程让出CPU,但该线程会再次抢夺CPU。

    展开全文
  • javaThread类的join方法

    千次阅读 2017-11-13 13:21:03
    那么我们如何实现让线程T1,T2,T3,在T1执行完成后才执行T2,T2执行完成后才执行T3,也就是线程的串行化,通过Thread类的join方法就可以实现。 join方法:将该线程加入当前线程,当前线程等待加入线程执行完成...
    单核cpu运行多线程时底层实现原理是多个线程间切换,由于cpu的处理速度很快,看上去像多个线程同时运行。那么我们如何实现让线程T1,T2,T3,在T1执行完成后才执行T2,T2执行完成后才执行T3,也就是线程的串行化,通过Thread类的join方法就可以实现。

    join方法:将该线程加入当前线程,当前线程等待加入线程执行完成才继续执行。
    例子:
    public class ThreadJoinTest implements Runnable {
    public static void main(String[] args) throws InterruptedException {
    Thread thread = new Thread(new ThreadJoinTest());
    thread.start();
    thread.join();
    System.out.println("主线程结束");
    }

    @Override
    public void run() {
    System.out.println("子线程开始");
    for(int i = 0; i < 5; i++) {
    try {
    Thread.sleep(1000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    System.out.println(i);
    }
    System.out.println("子线程结束");
    }
    }
    执行结果:
    join(long  millis)方法:将该线程加班当前线程,当前线程等待加入线程millis时间,当达到millis时间后不管加入线程是否完成,当前线程都继续执行,若加入线程在小于millis时间执行完成,则当前线程等待时间等于加入线程的执行时间。
    例子:
    public class ThreadJoinTest implements Runnable {
    public static void main(String[] args) throws InterruptedException {
    Thread thread = new Thread(new ThreadJoinTest());
    thread.start();
    thread.join(2000);
    System.out.println("主线程结束");
    }

    @Override
    public void run() {
    System.out.println("子线程开始");
    for(int i = 0; i < 5; i++) {
    try {
    Thread.sleep(1000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    System.out.println(i);
    }
    System.out.println("子线程结束");
    }
    }
    执行结果:

    展开全文
  • javaThread类的join()方法 分类: 学习笔记 java 多线程2012-03-10 11:45 1650人阅读 评论(0) 收藏 举报 threadjoinjavastringclass Thread类中有一个join()方法,在一个线程中启动另外一个...
  • JAVA的Thread类

    2013-05-03 11:13:36
    java.lang.Thread java.lang.Runnable 要启动一个新的线程,必须先建立一个对象,通过调用start()方法才能启动,因为start()方法定义咋thread类内,启动新...thread类常用的方法如下 public class Thread extend
  • JavaThread类join()方法原理

    万次阅读 多人点赞 2018-05-09 18:34:09
    join()是Thread类的一个方法。根据jdk文档的定义: public final void join()throws InterruptedException: Waits for this thread to die. join()方法的作用,是等待这个线程结束;但显然,这样的定义并不清晰...
  • 首先,“sleep是Thread类的方法,wait是Object类中定义的方法”。尽管这两个方法都会影响线程的执行行为,但是本质上是有区别的。 锁行为区别: sleep方法是线程类Thread的静态方法,让调用线程进入睡眠状态,让出...
  • 当一个方法后面声明可能会抛出InterruptedException异常时,说明该方法是可能会花一点时间,但是可以取消的方法...2.Java.lang.Thread类的sleep方法。 3.Java.lang.Thread类的join方法。 这里我们只看sleep方法。
  •  该方法打印出当前线程栈一些基本信息,比如下面一些信息  java.lang.Exception: Stack trace  at java.lang.Thread.dumpStack(Thread.java:1344)  at com.example.Test.say(Test.java:16)  at c
  • JavaThread类的start()方法和run()方法

    千次阅读 2017-07-05 18:29:17
    我们知道在Java中可以通过继承一个Thread类来实现一个线程类,继承以后,需要重载run()方法,但是在启动线程时候则又是用start()方法,这个是几个意思,启动直接用run()不行么,我们试一下。首先还是用start()方法...
  • 线程类Thread的方法 1)currentThread(): public static Thread currentThread() 说明:返回当前正在执行的线程对象的引用,即返回调用当前代码的线程对象。 2) join(): public final void join...
  • JAVA线程-Thread类的方法

    万次阅读 2016-05-17 15:50:15
    static Thread currentThread() 返回对当前正在执行线程对象引用。 long getId()返回该线程标识符。 String getName()返回该线程名称。 int getPriority() 返回线程优先级。 void interrupt() 中断...
  • 2 覆盖Thread类run方法 3 直接创建Thread子类对象创建线程 4 调用start方法开启线程并调用线程任务run方法执行 可以通过ThreadgetName获取线程名称 Thread-编号(从0开始) 一创建对象时就有编号 主线程...
  • java Thread 类的几种方法

    千次阅读 2017-05-20 15:56:58
    * 对于java来说只要还有一个前台线程在运行,这个进程就不结束,如果一个进程 * 只有后台线程,这个进程就会结束 */ package xian_cheng; public class Example06 { public static void main(String[] args) {...
  • Java Thread类主要方法详解

    万次阅读 2018-09-13 00:48:41
    java中,谈到线程,必然少不了Thread类。线程是比进程更轻量级调度执行单位。...主流操作系统(Windows, Linux)都提供了线程实现,Java则提供了在不同硬件和操作系统下对线程统一处理,Thread类则是...
  • javaThread类方法介绍

    千次阅读 2016-11-29 17:13:05
    方法摘要  static int activeCount()   返回当前线程线程组中活动线程数目。   void checkAccess()   判定当前运行线程是否有权修改该线程。   int countStackFrames()   已过时。 该调用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,514
精华内容 6,205
关键字:

java的thread类的方法

java 订阅