Thread的方法

1.public final void setDaemon(boolean on)
将此线程标记为daemon线程或用户线程。
当运行的唯一线程都是守护进程线程时,Java虚拟机将退出。
线程启动前必须调用此方法。
例子 1:(Daemon)
public class Demo_Daemon {
public static void main(String[] args) {
Thread t1=new Thread() {
public void run() {
for(int i=0;i<10;i++) {
System.out.println(getName()+"-----"+i+“aaaaaaaa”);
}
}
};
Thread t2=new Thread() {
public void run() {
for(int i=0;i<10000;i++) {
System.out.println(getName()+"--------"+“bbbbbbbbb”);
}
}
};
t2.setDaemon(true);
// 将t2设置为守护线程,t2则变成守护线程
// t1则变成非守护线程,非守护线程相当于主人
// 守护线程相当于仆人,非守护线程(主人)一旦执行完,守护线程也要跟着结束
t1.start();
t2.start();
}
}

2.public final void join()
暂停当前线程,等待指定的线程执行结束后,当前线程再继续

public class Demo_join {
	public static void main(String[] args) {
		Thread t1=new Thread() {
			public void run() {
				for(int i=0;i<1000;i++) {
					System.out.println(getName()+"----------"+i+"bbbbb");
				}
			}
		};
		Thread t2=new Thread() {
			public void run() {
				for(int i=0;i<10;i++) {
					System.out.println(getName()+"--------"+i+"aaaaaaaaa");
					if(i==2) {
						try {
//							t1.join();//当i=2的时候,暂停t2,去执行t1,直到t1线程死亡后再回来执行t2
							t1.join(10);//当i=2时,暂停t2,跳转到t1,,让t1执行10毫秒,然后再跳回t2,继续执行
						} catch (InterruptedException e) {
							e.printStackTrace();
						}
					}
				}
			}
		};
		t1.start();
		t2.start();
	}
}

3.public static void sleep(long millis)线程休眠
使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行)

public class Demo_Sleep {
	public static void main(String[] args) {
		demo1();
	}
	
	public static void demo1() {
		
		System.out.println("睡觉五秒钟");
		new Thread() {
			public void run() {
				try {
					Thread.sleep(5000);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				System.out.println("醒了");
			}
		}.start();
	}
	
	//计时
	public static void demo2() {
		new Thread() {
			public void run() {
				for(int i=1;i<=10;i++) {
					System.out.println(i);
					try {
						Thread.sleep(1000);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
			}
		}.start();
	}
	
	//倒计时
	public static void demo3() {
		new Thread() {
			public void run() {
				for(int i=10;i>0;i--) {
					System.out.println(i);
					try {
						Thread.sleep(1000);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
			}
		}.start();
	}
}

4.public static void yield() 线程礼让
线程礼让后不一定是执行其他执行线程,而是重新随机执行,有可能执行刚礼让的线程

  public class Demo_Yield {
    	public static void main(String[] args) {
    		new Thread("A线程") {
    			public void run() {
    				for(int i=0;i<2000;i++) {
    					System.out.println(getName()+"-------"+i+"aaaaaaaaa");
    					if(i==100) {
    						System.out.println("A线程礼让");
    						Thread.yield();
    						//当i=100时,调用yield进行礼让,cpu空出来,然后重新随机执行线程A或者线程B
    					}
    				}
    			}
    		}.start();
    		
    		new Thread("B线程") {
    			public void run() {
    				for(int i=0;i<2000;i++) {
    					System.out.println(getName()+"-------"+i+"bbbbb");
    					if(i==100) {
    						System.out.println("B线程礼让");
    					}
    				}
    			}
    		}.start();
    	}
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值