java实现runnabale的线程的static问题

u010556683 2016-04-18 10:00:58
java中为什么通过实现runnabale的线程中,a不用加static,这不是两个不同的线程吗,加上static才能共享吧,为什么不用加?
public class ThreadDemo
{
public static void main(String[] args)
{
MyThread mt1 = new MyThread();
MyThread mt2 = new MyThread();
Thread t1 = new Thread(mt1);
Thread t2 = new Thread(mt2);

t1.start();
t2.start();
}
}

class MyThread implements Runnable
{
private int ticket = 10;
String a="1";//String a=new ("1");这个地方如果用new必须是static,为什么a="1"就不需要static?
public void run()
{
synchronized(a){
for(int i = 0; i < 20; i ++)
{
if(this.ticket > 0)
{
System.out.println("卖票:" + this.ticket--);
}
}
}
}
...全文
155 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
silenccce 2016-04-19
  • 打赏
  • 举报
回复
static只是说明,该类的所有对象共享static修饰的东西,跟多线程没关系。
u010556683 2016-04-18
  • 打赏
  • 举报
回复
内存空间指的是什么?成员变量是放在堆里面的吧
Usher丶AckMan 2016-04-18
  • 打赏
  • 举报
回复
和存储空间有关系.String a="1",1存储在内存空间中,new a("1")存储在堆内存中,Java可以共享内存空间的数据,而堆内存中的数据是不可以共享.
u010556683 2016-04-18
  • 打赏
  • 举报
回复
引用 4 楼 renwotao2009 的回复:
[quote=引用 3楼renwotao2009 的回复:]String a="1";中常量字符串放在方法区也叫静态区,每个a都共享常量字符串"1" String a= new String("1");中动态创建字符串,字符串在堆中,用static修饰a,表示类的变量,所有对象共享a引用的对象
String a="1";中每个实例中引用a不同,但a引用的字符串"1"相同 两种方式都必须保证a引用的对象是同一个对象,即共享同一个对象实例[/quote] 如果是局部常量,例如for循环里面定义的i也是在常量池中吗
u010556683 2016-04-18
  • 打赏
  • 举报
回复
引用 5 楼 u010556683 的回复:
[quote=引用 4 楼 renwotao2009 的回复:] [quote=引用 3楼renwotao2009 的回复:]String a="1";中常量字符串放在方法区也叫静态区,每个a都共享常量字符串"1" String a= new String("1");中动态创建字符串,字符串在堆中,用static修饰a,表示类的变量,所有对象共享a引用的对象
String a="1";中每个实例中引用a不同,但a引用的字符串"1"相同 两种方式都必须保证a引用的对象是同一个对象,即共享同一个对象实例[/quote] 如果是局部常量,例如函数或者循环里面定义的常量为什么不是存储在静态区,而是栈区呢[/quote] 比如function(){ String a=1; }
renwotao2009 2016-04-18
  • 打赏
  • 举报
回复
引用 3楼renwotao2009 的回复:
String a="1";中常量字符串放在方法区也叫静态区,每个a都共享常量字符串"1" String a= new String("1");中动态创建字符串,字符串在堆中,用static修饰a,表示类的变量,所有对象共享a引用的对象
String a="1";中每个实例中引用a不同,但a引用的字符串"1"相同 两种方式都必须保证a引用的对象是同一个对象,即共享同一个对象实例
renwotao2009 2016-04-18
  • 打赏
  • 举报
回复
String a="1";中常量字符串放在方法区也叫静态区,每个a都共享常量字符串"1" String a= new String("1");中动态创建字符串,字符串在堆中,用static修饰a,表示类的变量,所有对象共享a引用的对象

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧