0819 Java枚举 线程

一、枚举

1、定义

被命名的整型常数的集合,枚举在日常生活中很常见。例如表示星期的SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,SATURDAY, 就是一个枚举。

2、关键字(enum)



二、线程

1、多线程实现方式:

①、自定义一个类继承Thread,并重写run方法

系统默认情况下只运行主线程

//主线程开起两个子线程
Thread1 thread1=new Thread1();
Thread2 thread2=new Thread2();
thread1.start();
thread2.start();

// 多线程类1
class Thread1 extends Thread{
@Override
public void run() {
System.out.println("线程1开始运行...");
//休眠1秒钟
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("线程1继续执行...");
}

}

//多线程类2
class Thread2 extends Thread{
@Override
public void run() {
System.out.println("线程2开始运行...");
//休眠1秒钟
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("线程2继续执行...");
}


}

②、直接使用Thread操作

Thread thread1=new Thread(){
@Override
public void run() {
// TODO Auto-generated method stub
//
Singleton ton=Singleton.getInstance();
System.out.println(ton.hashCode());
}
};
thread1.start();

2、单例模式 整个系统共享一个对象

懒汉式

//私有化构造
private Singleton(){
System.out.println("对象创建成功");
}

//全局对象
private static Singleton singleton = null;

    //加锁 synchronized
public static synchronized Singleton getInstance() {


//判断全局对象是否为空
if (singleton == null) {
//休眠一秒钟
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//如果为空,就创建该对象
singleton = new Singleton();
}
//如果不为空,就直接返回该对象
return singleton;
}

饿汉式

//跟懒汉式的区别:直接创建对象
public static Singleton2 ton=new Singleton2();

private Singleton2(){
System.out.println("对象创建成功");
}

public static Singleton2 getInstance(){
return ton;
}
饿汉式不管有没有调用getInstance方法,都会预先在系统中创建一个静态对象,懒汉式不会预先创建对象,只有在第一次调用时才创建对象
饿汉式优点:再多线程模式下是安全的
   缺点:没有调用方法前就被加载,会占用系统内存
懒汉式优点:只有调用方法才创建对象,调用之前不会占用内存
   缺点:在多线程模式下不安全

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值