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基础入门 传智博客高教产品研发部
本人郑重声明,本博客所著文章、图片版权归权利人持有,本博只做学习交流分享所用,不做任何商业用途。访问者可將本博提供的內容或服务用于个人学习、研究或欣赏,不得用于商业使用。同時,访问者应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人的合法权利;如果用于商业用途,须征得相关权利人的书面授权。若以上文章、图片的原作者不愿意在此展示內容,请及时通知在下,將及时予以刪除。