Java当中的线程(二)

来源:互联网 发布:网络举报工作总结 编辑:程序博客网 时间:2024/06/02 08:06

上次说了线程的实现方法是调用线程对象的run(),而这里要讲的是第二种方法。

Java当中提供了一个线程接口Runnable,下面是使用方法

RunnableImpl.java

class RunnableImpl implements Runnable{public void run(){for(int i = 0; i < 100; i++){System.out.println("Runnable-->" + i);}}}

Test.java

class Test{public static void main(String args []){//生成一个Runnable接口实现类的对象RunnableImpl ri = new RunnableImpl();//生成一个Thread对象,并将Runnable接口实现类的对象作为参数//传递给该Thread对象Thread t = new Thread(ri);//通知Thread对象,执行start方法。t.start();}}

用Runnable接口实现类同样能使用线程。


下面介绍些线程的简单控制方法

Thread.sleep();  使线程进入休眠状态,退出休眠后是进入就绪状态。下面修改RunnableImpl.java

RunnableImpl.java

class RunnableImpl implements Runnable{public void run(){for(int i = 0; i < 100; i++){System.out.println("Runnable-->" + i);if(i == 50){try{Thread.sleep(2000);}catch(Exception e){System.out.println(e);}}}}}
同样的,之前使用过Thread.sleep()的时候会产生异常,也同样的方法,捕捉它。

Test.java不变,运行编译后会发现,到50的时候会停大概2s,再继续运行。


Thread.yield();  使线程退出抢占状态,重新回到抢CPU状态,就是就绪状态。

getPriority()

setPriority()

修改Test.java

class Test{public static void main(String args []){//生成一个Runnable接口实现类的对象RunnableImpl ri = new RunnableImpl();//生成一个Thread对象,并将Runnable接口实现类的对象作为参数//传递给该Thread对象Thread t = new Thread(ri);//线程优先级最大为10,最小为1,可以使用t.setPriority(Thread.MIN_PRIORITY);//通知Thread对象,执行start方法。t.start();System.out.println(t.getPriority());}}

通过这个代码,可以看出,线程优先级最大为10,最小为1。可用MAX_PRIORITY和MIN_PRIORITY

优先级越高,抢占CPU的概率越大。


原创粉丝点击