如何将一个java对象放入内存中一直使用呢? 并且不同的线程创建的该对象不同
5个回答
展开全部
1.
java中除了int、float这种原始类型其他的都是类类型,都要new出来。
new一个对象就一直是在内存中了,new了后不要管释放,有垃圾回收。
比如A是一个类,
A a = new A();
那么a其实是一个引用,指向new出来的A对象。
如果再
b=a;
那么b和a都指向new出来的A对象。
如果上面的A a = new A();和b=a;是在一个函数中,那么函数调用完了,a和b就释放了,然后new出来的A对象没有被谁引用了,垃圾回收机制就会回收。
如果你想一直存在一个对象,简单。你创建一个类
public class Haha
{
public static A a = new A();
}
以后用Haha.a 就可以一直访问了。
2. 不同线程创建的对象,既然提到创建,也就是new,一定是2个对象。
java中除了int、float这种原始类型其他的都是类类型,都要new出来。
new一个对象就一直是在内存中了,new了后不要管释放,有垃圾回收。
比如A是一个类,
A a = new A();
那么a其实是一个引用,指向new出来的A对象。
如果再
b=a;
那么b和a都指向new出来的A对象。
如果上面的A a = new A();和b=a;是在一个函数中,那么函数调用完了,a和b就释放了,然后new出来的A对象没有被谁引用了,垃圾回收机制就会回收。
如果你想一直存在一个对象,简单。你创建一个类
public class Haha
{
public static A a = new A();
}
以后用Haha.a 就可以一直访问了。
2. 不同线程创建的对象,既然提到创建,也就是new,一定是2个对象。
追问
static,new的时候是同一个对象啊
追答
追问
static,new的时候是同一个对象啊
这个是这个类第一次被引用的时候才会new一次
展开全部
1楼基本正解,只是不同的线程创建的该对象不同? 既然都是该对象了,怎么会不同了。。。
public class A{
public static AA=new AA();
}
A.AA在内存中,可以一直使用。但是所有的线程用的都是同一个对象。
也就是说楼主所说的并且不存在。
public class A{
public static AA=new AA();
}
A.AA在内存中,可以一直使用。但是所有的线程用的都是同一个对象。
也就是说楼主所说的并且不存在。
更多追问追答
追问
那有什么办法,使不同线程创建不同的对象?
比如,A用户登录,创建User对象保存用户名字A,然后B用户登录,创建User对象保存名字B?
追答
public class User{
private String UserName="";
private String Password="";
public User(String UserName0,String Password0){
UserName=UserName0;
Password=Password0;
}
//省略get、set方法
}
A登陆时,User A=new User("A","******");
楼主是说的web开发吧?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用一个static的容器保存你创建的对象,便一直存在
追问
那另一个线程也创建该对象的话,能不覆盖吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-05-09
展开全部
对象序列化,即把对象以字节式存入文件中。用的时候再读出。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
写一个实体类,第一次调用就把对象放入实体类中,直到关闭程序才销毁对象。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询