当前位置: 首页 > news >正文

技术支持 沧州辉煌网络-网站建设seo需要掌握什么技能

技术支持 沧州辉煌网络-网站建设,seo需要掌握什么技能,车载导航地图属于什么地图,制作网站谁家做的好线程安全 线程安全:线程安全:synchronized同步代码块:同步方法:成员同步方法:静态同步方法: Lock:应用: 单例模式:懒汉式:饿汉式:枚举饿汉式:双重检验锁: 线程…

线程安全

  • 线程安全:
    • 线程安全:
      • synchronized
        • 同步代码块:
        • 同步方法:
          • 成员同步方法:
          • 静态同步方法:
      • Lock:
        • 应用:
    • 单例模式:
      • 懒汉式:
      • 饿汉式:
      • 枚举饿汉式:
      • 双重检验锁:

线程安全:

线程安全:

线程安全 – 加锁
注意:要想多个线程互斥住,就必须使用同一把锁(对象)!!!

加锁方式:

  1. synchronized
  2. Lock

 

synchronized

  1. 同步代码块
  2. 同步方法

 

同步代码块:

数据结构:

synchronized(锁对象){//自动上锁...想要互斥的代码...}//自动解锁

 

同步方法:
  1. 成员同步方法
  2. 静态同步方法

 

成员同步方法:

注意:锁对象 -> this

多个子线程时,调用的对象(this)不一样,则锁不住。

数据结构:

public synchronized void method(){//自动上锁...想要互斥的代码...}//自动解锁

 

静态同步方法:

注意:锁对象 -> 类.class

public static synchronized void method(){//自动上锁...想要互斥的代码...}//自动解锁

 
 

Lock:

			//锁对象Lock lock = new ReentrantLock();lock.lock();//手动上锁...想要互斥的代码...lock.unlock();//手动解锁

 

应用:
public class MyThread extends Thread{private static int allTicket = 1000;private static int curTicket = 0;private static Lock lock = new ReentrantLock();public MyThread(String name) {super(name);}@Overridepublic void run() {while(curTicket < allTicket){lock.lock();//手动上锁try {if(curTicket < allTicket){curTicket++;System.out.println("窗口" + Thread.currentThread().getName() + "正在销售第" + curTicket + "张票");}if(curTicket >= allTicket){System.out.println("窗口" +  Thread.currentThread().getName() + "票已经售完");}} catch (Exception e) {e.printStackTrace();} finally {lock.unlock();//手动解锁}}}}
public static void main(String[] args) {MyThread t1 = new MyThread("001");MyThread t2 = new MyThread("002");MyThread t3 = new MyThread("003");t1.start();t2.start();t3.start();}

 

 

单例模式:

该类的对象在整个项目中只创建一次(只实例化一次)。

 

懒汉式:

单例模式(懒汉式)不是线程安全的。

public class A {//声明对象名private static A a;private A(){}public static A getIntance(){//判断对象为空,再创建对象if(a == null){a = new A();}return a;}
}
public static void main(String[] args) {A a1 = A.getIntance();A a2 = A.getIntance();A a3 = A.getIntance();A a4 = A.getIntance();//地址都是一样的,则是一个对象System.out.println(a1);System.out.println(a2);System.out.println(a3);System.out.println(a4);}

 
 

饿汉式:

单例模式(饿汉式)是线程安全的。

public class A {//先创建对象private static A a = new A();private A(){}public static A getIntance(){return a;}public static void method(){System.out.println("用良心做教育");}
}
public static void main(String[] args) {A a1 = A.getIntance();A a2 = A.getIntance();A a3 = A.getIntance();A a4 = A.getIntance();System.out.println(a1);System.out.println(a2);System.out.println(a3);System.out.println(a4);}

 
 

缺点:如果只调用了类里的静态方法,没用到单例对象,就是浪费空间。

public static void main(String[] args) {A.method();}

 

 

枚举饿汉式:

枚举单例模式(饿汉式)是线程安全的。

public enum A {//public static final A a = new A();a;private A(){}public static A getIntance(){return a;}public static void method(){System.out.println("用良心做教育");}@Overridepublic String toString() {return String.valueOf(a.hashCode());}
}
public static void main(String[] args) {A a1 = A.getIntance();A a2 = A.getIntance();A a3 = A.getIntance();A a4 = A.getIntance();System.out.println(a1);System.out.println(a2);System.out.println(a3);System.out.println(a4);}

 
 

缺点:如果只调用了枚举里的静态方法,没用到单例对象,就是浪费空间。

public static void main(String[] args) {A.method();}

 
 

双重检验锁:

项目中使用的单例模式------->双重检验锁。

双重检验锁的单例模式是线程安全的。

volatile – 防止指令重排

 
创建对象的过程:

​ a.开辟空间 ----- new 对象() – 0x001

​ b.调用构造方法 – 初始化数据

​ c.将空间赋值给引用 – 类型 引用 = 0x001

 
创建对象的步骤:a/b/c 或 a/c/b
 
注意:如果创建对象的步骤是a/c/b,多线程的情况下可能会导致获取的属性为null
 
解决方案:使用volatile,防止指令重排,创建的步骤必须按照a/b/c

public class A {private static volatile A a;private A(){}public static A getIntance(){if(a == null){synchronized (A.class) {if(a == null){a = new A();}}}return a;}//	public static A getIntance(){
//		
//		if(a != null){
//			return a;
//		}
//		synchronized (A.class) {
//			if(a == null){
//				a = new A();
//			}
//		}
//		return a;
//	}
}
public static void main(String[] args) {A a1 = A.getIntance();A a2 = A.getIntance();A a3 = A.getIntance();A a4 = A.getIntance();System.out.println(a1);System.out.println(a2);System.out.println(a3);System.out.println(a4);}
http://www.hkea.cn/news/642233/

相关文章:

  • 个人网站意义阿里指数官网最新版本
  • 网站开发方式有哪四种搜索引擎优化课程总结
  • 申请做网站、论坛版主app推广接单
  • 青海网站建设广州seo优化推广
  • 物流公司网站制作模板上海网站关键词排名
  • 广西建设人才网搜索引擎优化的目标
  • 比汉斯设计网站素材图片搜索识图入口
  • php网站架设教程英雄联盟韩国
  • 做毕设好的网站百度客服电话24小时
  • 上海手机网站建设电话咨询seo综合查询系统
  • wordpress 4.6 中文版沈阳seo
  • 文件管理软件天津搜索引擎优化
  • 九亭网站建设全国疫情高峰时间表最新
  • 青岛网站建设公司武汉seo收费
  • mvc网站建设的实验报告怎么做优化
  • 有官网建手机网站千锋教育培训多少钱费用
  • b2c交易模式的网站有哪些百度营销客户端
  • flash 学习网站重庆网站seo多少钱
  • 年终总结ppt模板免费下载网站小红书seo排名规则
  • 自己架设网站口碑营销的产品有哪些
  • 湖北省网站备案最快几天天津百度推广排名优化
  • app在线开发制作平台seo网络优化前景怎么样
  • 商务网站的基本情况网站建设工作总结
  • 山西建设厅网站网络销售怎么聊客户
  • 软装素材网站有哪些seo网络排名优化哪家好
  • 邯郸市做网站建设网络口碑营销案例分析
  • 罗湖网站建设联系电话西安核心关键词排名
  • 如何编写网站电脑清理软件十大排名
  • 怎么给企业制作网站seo关键词排名优化哪好
  • 高仿服装网站建设西安百度关键词推广