当前位置: 首页 > 后端技术 > Java

Java线程相关方法

时间:2023-04-01 16:54:14 Java

线程相关方法  voidstart():启动线程,执行对象的run()方法。  run():线程被调度时执行的方法体。  StringgetName():返回线程的名称。  voidsetName(Stringname):设置线程名称。  staticThreadcurrentThread():返回当前线程对象。在Thread子类中是this,通常用于主线程和Runnable实现类。  staticvoidyield():线程yield,释放当前CPU的执行权。它可能会在下一刻再次可用。挂起当前正在执行的线程,将执行机会交给具有相同或更高优先级的线程。如果队列中没有相同优先级的线程,则忽略此方法。  join():在线程A中调用线程B的join(),此时线程A进入阻塞状态。直到线程B执行完毕(相当于插队),线程A才结束阻塞状态。较低优先级的线程也可以得到执行。  staticvoidsleep(longmillis):让当前线程休眠指定的毫秒数。在睡眠期间,当前线程被阻塞。锁不会被释放。使当前活跃的线程在指定的时间内放弃CPU的控制权,让其他线程有机会被执行,时间到了重新排队。抛出InterruptedException异常。  stop():强制结束线程生命周期,不推荐。(过时的)。  booleanisAlive():返回boolean,判断线程是否还活着。  代码示例:join()使用复制代码1publicclassMain{2publicstaticvoidmain(String[]args)throwsInterruptedException{3MyThreadmyThread=newMyThread();4myThread.setName("线程一");5我的线程.start();67Thread.currentThread().setName("主线程");8for(inti=0;i<100;i++){9if(i%2==0){10System.out.println(Thread.currentThread().getName()+":"+i);11}12//当主线程获得CPU执行权到i=40时,进入block,等待线程执行13if(i==40){14myThread.join();15}16}17}18}1920类MyThread扩展线程{2122@Override23publicvoidrun(){24for(inti=0;i<100;i++){25if(i%2==0){26System.out.println(Thread.currentThread().getName()+":"+i);27}28}29}30}复制代码5.线程调度  调度策略:时间片循环训练;preemptive,高优先级线程抢占CPU。  Java的调度方式:相同优先级的线程组成一个先进先出队列(first-in-first-serve),采用时间片策略;对于高优先级,使用优先级调度的抢占策略。