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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© @ne_pie尒ce 中级黑马   /  2013-11-8 07:40  /  1109 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

下面两个方法同步吗?
        class Test
{
synchronized static void sayHello3()
                {
               
                }       
       
                synchronized void getX(){}
}

2 个回复

倒序浏览
同步函数默认的锁是this,同步代码块要指定锁,不一定是this。
所以不一定同步
回复 使用道具 举报
还真不一定同步,一个是静态,另一个是在需要实例化后才有this的非静态方法,两个的同步锁就不一样,很难同步吧,若想定义线程同步非静态方法,参看
/**
* 测试java多线程的同步,使用5个线程调用载体方法。
*
* 测试用例1:给载体方法加上synchronized修饰词(如程序中)。
* 结果:载体方法被同步,每秒打印一条记录;
*
* 测试用例2:去掉载体方法的synchronized修饰词(请自己试下)。
* 结果:载体方法没有被同步,5条记录很快打印完。
*
* 结论:可想而知!给static方法添上synchronized修饰词,方法就被同步。
*/
public class TestSynchronized {
       
        public static void main(String args[]){
               
                // 开启5个线程调用载体方法
                TestSynchronized.mutilThreadInvoke(5);
        }
       
        /**
         * 同步的载体方法
         */
        public synchronized static void method(){
               
                try {
                        Thread.sleep(1000);
                } catch (InterruptedException e) {
                        e.printStackTrace();
                }
                System.out.println("method print. time:"+System.currentTimeMillis());
        }
       
        /**
         * 多线程调用载体方法
         * @param n:调用线程的数目
         */
        public static void mutilThreadInvoke(int n){
               
                for(int i=0 ; i < n ; i++){
                        new Thread(
                                        new Runnable(){

                                                @Override
                                                public void run() {
                                                        // 调用载体方法
                                                        TestSynchronized.method();
                                                }
                                               
                                        }
                        ).start();
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马