Java_Day14

来源:互联网 发布:电信网络客服电话 编辑:程序博客网 时间:2024/06/08 06:12

 thread.setDaemon(true);//守护线程

当所有的非守护线程结束时,程序也就终止了,

同时会杀死进程中的所有守护线程。(必须在线程启动前调用)

thread.join();//thread.join()方法阻塞调用此方法的线程(calling thread),直到线程t完成,此线程再继续

通常用于在main()主线程内,等待其它线程完成再结束main()主线程。


火车票卖票demo,synchronized的用法:

public class Demo {
public static void main(String[] args) {
A a1 = new A();
Thread t1 = new Thread(a1, "窗口一");
Thread t2 = new Thread(a1, "窗口二");
Thread t3 = new Thread(a1, "窗口三");
t1.start();
t2.start();
t3.start();
}
}
class A implements Runnable{
int i = 10;
@Override
public void run() {
while (i > 0) {
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (this) {
if (i>0) {
System.out.println(Thread.currentThread().getName()+i--);
}
}
}
}
}


yield()方法

理论上,yield意味着放手,放弃,投降。一个调用yield()方法的线程告诉虚拟机它乐意让其他线程占用自己的位置。这表明该线程没有在做一些紧急的事情。注意,这仅是一个暗示,并不能保证不会产生任何影响。

  • Yield是一个静态的原生(native)方法
  • Yield告诉当前正在执行的线程把运行机会交给线程池中拥有相同优先级的线程。
  • Yield不能保证使得当前正在运行的线程迅速转换到可运行的状态
  • 它仅能使一个线程从运行状态转到可运行状态,而不是等待或阻塞状态
单例模式

public class DateUtil {
//1.只能创建一个对象
//2.如果不想让别人创建对象,构造方法私有化

private static DateUtil du = new DateUtil();// 饿汉模式
//2.如果不想让别人创建对象,构造方法私有化

private DateUtil(){}
//3.提供公开的方法,返回对象
public static DateUtil getInstance(){
return du;
}
}


public class GeneRateCode {
//提供一个对象
private static GeneRateCode grc ;
//构造方法私有化
private GeneRateCode(){}
//提供公开的方法,用于获取对象
public static GeneRateCode getInstance(){//懒汉模式
if(grc == null){
synchronized(GeneRateCode.class){
if(grc == null){
grc = new GeneRateCode();
}
}
}
return grc ;
}

原创粉丝点击