第一次见到这个题目,我觉得自己没学到java,太浅了,其实这个问题没有考synchronized关键字,只是考什么是对象?
1.在java编程思想的第二章有一句话;
一切都是对象,很可惜int,char 等不是的,虽然他们有他们的包装类,但是java还是保留了int 这些好用的原子类型,
对于synchronized后面可以跟对象和.class所以 字符串是对象可以,Integer对象可以,ExampleCLass.class可以。
我想问的是,数组是对象吗?
查了一下,是对象,所以数组也是答案。http://blog.csdn.net/qq1130141391/article/details/8677459我们看懂,口说无凭。
答案就是除了int不行其他都行
package heelo; class MyThread implements Runnable { //private int a=6; 通不过编译 // private String a="daad"; 成功 // private Integer a=new Integer(-33); 通过 //private int a[]=new int[10]; 通过 //private Class a=Integer.class; 通过 @Override public void run() { // TODO 自动生成的方法存根 synchronized (a) { for(int i=0;i<5;i++) { System.out.println(Thread.currentThread().getName()+i); } } } } public class Solution { public static void main(String args[]) { MyThread my=new MyThread(); Thread t1=new Thread(my,"AAAA"); Thread t2=new Thread(my,"BBBB"); t1.start(); t2.start(); } }