java中 sleep线程睡眠 Join线程独占 Yeile 线程让步 Interrupt线程中断 Deamon后台线程

来源:互联网 发布:数据库抽取0或null 编辑:程序博客网 时间:2024/06/04 08:12

Sleep


package 线程生命周期;public class TestSleep {public static void main(String[] args) {// TODO Auto-generated method stubMyThread mythread = new MyThread();mythread.start();//子线程,每隔50毫秒输出一行字try {MyThread.sleep(2000);//这个是暂定的是主线程的} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}for (int i = 1; i < 20; i++) {System.out.println("main:"+i);}}}//输出1-100的数class MyThread extends Thread{public void run(){for (int i = 1; i <= 100; i++) {System.out.println(i);try {Thread.sleep(50);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}


Join

package 线程生命周期;public class TestJoin {public static void main(String[] args) {// TODO Auto-generated method stubMythread3 th1 = new Mythread3();th1.setI(20);Mythread3 th2 = new Mythread3();th2.setI(100);/*//交替输出th1.start();th2.start();*///先执行th1th1.start();try {th1.join();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}th2.start();}}class Mythread3 extends Thread{private int i;public int getI() {return i;}public void setI(int i) {this.i = i;}@Overridepublic void run() {// TODO Auto-generated method stubsuper.run();for (int j = i; j < i + 50; j++) {System.out.println(j);try {Thread.sleep(10);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}


Yeile 

package 线程生命周期;public class TestYeile {public static void main(String[] args) {// TODO Auto-generated method stub//创建三个优先级不一样的线程 10 5 1的时候都是高的在执行所以全部选5new MyThread2("低级",5).start();new MyThread2("高级",5).start();new MyThread2("中级",5).start();}}//结合线程信息输出1-10class MyThread2 extends Thread{public MyThread2() {super();// TODO Auto-generated constructor stub}//创建一个构造方法用于给线程命名以及优先级public MyThread2(String name,int pro){super(name);setPriority(pro);}public void run(){for (int i = 1; i <= 20; i++) {System.out.println(getName()+"线程第"+i+"次运行");if(i == 5)Thread.yield();//线程让步}}}


 Interrupt线程中断

package 线程生命周期;import java.util.Scanner;public class TestInterrupt {public static void main(String[] args) {// TODO Auto-generated method stubMyThread4 th4 = new MyThread4();th4.start();try {Thread.sleep(3000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("是否中断打印");boolean flag  = true;if(flag)th4.interrupt();}}//无限次打印iclass MyThread4 extends Thread{int i = 0;@Overridepublic void run() {// TODO Auto-generated method stubsuper.run();while(true){System.out.println(i);try {Thread.sleep(500);} catch (InterruptedException e) {// TODO Auto-generated catch blockSystem.out.println("程序执行被中断了");return;//e.printStackTrace();}i++;}}}


Deamon后台线程

package 线程生命周期;public class TestDeamon {public static void main(String[] args) {// TODO Auto-generated method stubMyThread5 th5 = new MyThread5();MyDeamon myd = new MyDeamon();myd.setDaemon(true);myd.start();th5.start();}}class MyThread5 extends Thread{@Overridepublic void run() {// TODO Auto-generated method stubsuper.run();for (int i = 1; i <= 5; i++) {System.out.println("前台线程第"+i+"次执行");try {Thread.sleep(200);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}class MyDeamon extends Thread{@Overridepublic void run() {// TODO Auto-generated method stubsuper.run();for (int i = 1; i <= 5; i++) {System.out.println("后台线程第"+i+"次执行");try {Thread.sleep(10);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}


0 0
原创粉丝点击