java线程中的常用方法

来源:互联网 发布:淘宝二手钢琴 编辑:程序博客网 时间:2024/05/20 05:23

《Thread和Runnable浅析》中已经说明使用Runnable接口比直接使用Thread要好,因此下面的操作,都是实现Runnable接口。

1、public static Thread currentThread(),返回当前线程;

public void setName(String name),设置线程的名字;

public String getName(),返回线程的名字;

import java.lang.Runnable;import java.lang.Thread;class Demo implements Runnable{public void run(){for(int i = 0;i<10;i++){//获取当前线程的名字System.out.println(Thread.currentThread().getName());}}}public class ThreadDemo06{public static void main(String[] args){Demo demo  = new Demo();Thread thread1 = new Thread(demo);Thread thread2 = new Thread(demo);thread2.setName("线程2");Thread thread3 = new Thread(demo,"线程3");thread1.start();thread2.start();thread3.start();for(int i = 0;i<10;i++){//得到的是主线程的名字:mainSystem.out.println(Thread.currentThread().getName());}}}
从上面我们可以看出,设置线程名的方式有两种:一种是thread2.setName("线程2");一种是Thread thread3 = new Thread(demo,"线程3");

main方法中的for循环,输出的当前的线程名为:main,因为当前线程是主线程。


2、public static void sleep(long millis);静态方法,设置线程休眠的时间,单位是毫秒。

import java.lang.Thread;import java.lang.Runnable;public class ThreadDemo07{public static void main(String[] args){Demo demo = new Demo();new Thread(demo).start();}}class Demo implements Runnable{public void run(){for(int i = 0;i<10;i++){if(i==5){System.out.println("休眠之前时间是:"+System.currentTimeMillis());try{//设置线程休眠1sThread.sleep(1000);}catch(InterruptedException e){}System.out.println("休眠之后的时间是"+System.currentTimeMillis());}}}}

3、public  final void setPriority(int newPriority),设置线程优先级;

public final int getPriority(),去的线程优先级。

import java.lang.Thread;import java.lang.Runnable;public class ThreadDemo08{public static void main(String[] args){//改变主线程的优先级Thread.currentThread().setPriority(6);for(int i = 0;i<30;i++){if(i==10){Demo demo1 = new Demo("低级");demo1.start();System.out.println("创建之初的优先级:"+demo1.getPriority());//设置线程为最低优先级demo1.setPriority(Thread.MIN_PRIORITY);}if(i == 20){Demo demo2 = new Demo("高级");demo2.start();System.out.println("创建之初的优先级:"+demo2.getPriority());//设置线程为最高优先级demo2.setPriority(Thread.MAX_PRIORITY);}}}}class Demo extends Thread{private String name;public Demo(String name){this.name = name;}public void run(){for(int i = 0;i<10;i++){System.out.println(this.name+"其优先级是:"+getPriority()+",循环变量的值为:"+i);}}}
Thread类中提供了三个静态变量:(值越大优先级越高)

MAX_PRIORITY:其值是10;

NORM_PRIORITY:其值是5;

MIN_PRIORITY:其值是:1;


4、public final boolean isAlive(),判断线程是否存活;此方法没有固定值,因为线程有可能优先执行,也有可能最后执行。

import java.lang.Runnable;import java.lang.Thread;public class ThreadDemo10{public static void main(String[] args){Demo  demo = new Demo();Thread t = new Thread(demo);System.out.println("线程启动前:"+t.isAlive());t.start();System.out.println("线程启动后:"+t.isAlive());}}class Demo implements Runnable{public void run(){System.out.println("实现了Runnable接口");}}

5、public final void join(),强制执行一个线程,只有当线程执行完之后,其他线程才可以继续执行。

import java.lang.Runnable;import java.lang.Thread;public class ThreadDemo11{public static void main(String[] args){Demo  demo = new Demo();Thread t1 = new Thread(demo,"线程1");t1.start();for(int i = 0;i<50;i++){if(i==10){try{t1.join();}catch(InterruptedException e){e.getMessage();}}System.out.println(Thread.currentThread().getName()+"-->"+i);}}}class Demo implements Runnable{public void run(){for(int i = 0;i<10;i++){System.out.println(Thread.currentThread().getName()+"-->"+i);}}}

原创粉丝点击