您的位置:首页 > 编程语言 > Java开发

java线程--优先级、休眠、让步、插队实例

2017-11-03 20:00 537 查看

1.线程的优先级

java线程的优先级通常是数字越大,优先级越高数值取1~10

package com.example;

public class MyThreadPriority {
public static void main (String [] args){
Thread maxpriority = new Thread(new Maxpriority(),"优先级较高的线程");
Thread minpriority = new Thread(new Minpriority(),"优先级较低的线程");
minpriority.setPriority(Thread.MIN_PRIORITY);  //设置线程的优先级为1
maxpriority.setPriority(10); //设置线程优先级为10
//开启两个线程
maxpriority.start();
minpriority.start();
}
}

class Maxpriority implements  Runnable{
public void run(){
for (int i=0;i<10;i++){
System.out.println(Thread.currentThread().getName()+"正在输出"+i);
}
}

}

class Minpriority implements  Runnable{
public void run(){
for (int i=0;i<10;i++){
System.out.println(Thread.currentThread().getName()+"正在输出:"+i);
}
}

}


执行结果:

优先级较高的线程正在输出0

````

优先级较高的线程正在输出9

优先级较低的线程正在输出:0

```

优先级较低的线程正在输出:9

2.线程的休眠

package com.example;

public class MyThreadSleep {
public static void main (String [] args) throws InterruptedException {
new Thread(new SleepThread()).start();
for(int i=0;i<10;i++){
if(i==5){
Thread.sleep(5000);
System.out.println("主线程正在输出:"+i);
Thread.sleep(3000);
}

}
}
}

class SleepThread implements Runnable{

public void run(){
for(int i=0;i<10;i++){

if(i==3){

try {
Thread.sleep(3000);
}catch (InterruptedException e){
e.printStackTrace();
}
}
System.out.println("线程1正在输出:"+i);
try {
Thread.sleep(2000);
}catch (Exception e){
e.printStackTrace();
}
}
}
}


3、线程让步

package com.example;

public class MyYieldThread {
public static void main (String [] args){
Thread t1 = new YieldThread("线程1");
Thread t2 = new YieldThread("线程2");
//开启两个线程
t1.start();
t2.start();

}
}

class YieldThread extends  Thread{

public YieldThread (String name){
super (name); //调用父类的构造方法
}

public void run(){
for(int i = 0;i<5;i++){

System.out.println(Thread.currentThread().getName()+"---"+i);
if(i==3){
System.out.println("线程让步:");
Thread.yield(); //线程运行到此作出让步

}

}

}
}


运行结果:

线程1—0

线程1—1

线程1—2

线程1—3

线程让步:

线程2—0

线程2—1

线程2—2

线程2—3

线程让步:

线程1—4

线程2—4

4、线程的插队

package com.example;

public class MyEmergercyThread {
public static void main (String [] args) throws InterruptedException {
Thread t =new Thread(new EmergencyThread(),"线程1");//创建线程
t.start(); //开启线程
for(int i=1;i<6;i++){
System.out.println(Thread.currentThread().getName()+"输入:"+i);
if(i==2){
t.join(); //调用join()方法
}
Thread.sleep(500); //线程休眠500毫秒
}
}
}

class  EmergencyThread  implements  Runnable{
public void run(){

for (int i=1;i<6;i++){
System.out.println(Thread.currentThread().getName()+"输入:"+i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}

}
}

}


运行结果:

main输入:1

线程1输入:1

main输入:2

线程1输入:2

线程1输入:3

线程1输入:4

线程1输入:5

main输入:3

main输入:4

main输入:5

参考文档:

Java基础入门 传智博客高教产品研发部 

本人郑重声明,本博客所著文章、图片版权归权利人持有,本博只做学习交流分享所用,不做任何商业用途。访问者可將本博提供的內容或服务用于个人学习、研究或欣赏,不得用于商业使用。同時,访问者应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人的合法权利;如果用于商业用途,须征得相关权利人的书面授权。若以上文章、图片的原作者不愿意在此展示內容,请及时通知在下,將及时予以刪除。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 线程