A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

ava中为什么通过实现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--);
}
}
}
}

1 个回复

倒序浏览
不用new是直接从方法区内存中的常量池中获取对象,属性相同的必定是同一对象;
用new会在堆内存中创建对象,属性相同的也不是同一对象;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马