黑马程序员技术交流社区

标题: java实现runnabale的线程的static问题 [打印本页]

作者: saiqqww234    时间: 2016-5-4 23:33
标题: java实现runnabale的线程的static问题
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--);
}
}
}
}
作者: ls20090726    时间: 2016-5-5 13:55
不用new是直接从方法区内存中的常量池中获取对象,属性相同的必定是同一对象;
用new会在堆内存中创建对象,属性相同的也不是同一对象;




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2