java线程共享队列数据及实现粒子飞散与复原

本文探讨了Java中的单例模式,包括懒汉式和饿汉式的实现,以及它们在多线程环境下的表现。线程在多任务操作系统中扮演重要角色,通过共享数据来减少资源消耗。此外,还介绍了如何从图片中获取二维像素数组。代码示例展示了如何实现这些概念,并提供了代码仓库链接。
摘要由CSDN通过智能技术生成

java线程共享队列数据及实现粒子飞散与复原

1.单实例模式

单实例模式是java设计模式中最简单的设计模式,这种模式只涉及单一的类,该类自己创建对象,且只允许创建一个对象,同时该类提供一种获取该对象的方法,可以直接访问。
意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

主要解决:一个全局使用的类频繁地创建与销毁。

何时使用:当您想控制实例数目,节省系统资源的时候。

如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。

关键代码:构造函数是私有的。
示例:
1.懒汉式,线程不安全
描述:这种方式是最基本的方式,他的最大问题是不支持多线程,没有加锁synchronized,这种方式不要求线程安全,在多线程时无法正常工作

public class Singleton{
	public static Singleton instance;
	private Singleton(){};//构造器私有
	public static Singleton getInstance(){
		if(instance==null) instance=new Singleton();
		return instance;
	}
}

2.饿汉式,
描述:这种方式比较常用,支持线程安全,但容易产生垃圾对象

public class Singleton{
	public static SingLeton instance=new SingLeton();
	private SingLeton(){};
	public static Singleton getinstance(){
		return instance;
	}
}

同时可在这个单实例类中添加需要再项目中频繁用到的对象,例如队列,这样便于节省内存。

什么是线程

1.现代操作系统时多任务操作系统,多线程是多任务实现的一种方式;
那么多线程与多进程有哪些区别呢?本质在于每个进程有自己的一整套变量,而线程则共享数据,,这使得线程之间的通信更加有效容易,开销更小。

图片数组

一张图片是有许多个像素点组成的,这些像素点有自己的RGB值,因此一张图片可以看成一个二维数组。在java中我们可以这样获取这个图片二维数组

public int[][] getPixelArr(String path){
	File file=new File(path);
	BufferedImage bImage=null;
	try{
		bImage=ImageIO.read(file);
	}catch(Exception e){
		e.printStackTrace();
	}
	int w=bImage.getWidth();
	int h=bImage.getHeight();
	int[][] ImageArr=new int[w][h];
	for(int i=0;i<w;i++){
		for(int j=0;j<h;j++){
			int v=bImage.getRGB(i,j);
			ImageArr[i][j]=v;
		}
	}
	return ImageArr;
}
代码地址

https://github.com/wmdsg/javaThread

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值