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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/*不知道大家有没有发现,这个题目,s1,s2既可以定义在main函数内(局部变量),也可以在main函数外(成员变量)
但是其修饰关键字不一样,作为局部变量时:final关键字修饰
作为成员变量时:static关键字修饰.
个人总结了下:1.S1,S2放在main函数内,作为局部变量使用,因为S1,S2是被建立的匿名类对象调用,而局部变量的身份使其生命周期较短,需要用final修饰放到常量池延长生命周期.2.S1,S2放在main函数外,作为成员变量使用,因为main函数是被static修饰的,所以其需要被static修饰(静态方法只能调用静态方法,静态成员)
*/
public class LockDead {

         static String s1 ="筷子左";//main函数为静态,只能访问静态成员,须用static修饰
         static  String s2 ="筷子右";
        public static void main(String[] args) {
                //final  String s1 ="筷子左";//需要被final修饰,被匿名类调用,延长生命周期.
                //final  String s2 ="筷子右";
     new Thread(){
             public void run(){
                     while(true){
                             synchronized (s1) {
                                        System.out.println("获取"+s1+"等待"+s2);
                             synchronized (s2) {
                                     System.out.println(s1+s2+"都有了,开始吃饭");       
                                }
                             }
                     }
             }
     }.start();
     new Thread(){
             public void run(){
                     while(true){
                             synchronized (s2) {
                                        System.out.println("获取"+s2+"等待"+s1);
                               
                             synchronized (s1) {
                                     System.out.println(s1+s2+"都有了,开始吃饭");
                             }
                             }
                     }
             }
     }.start();
        }
}

评分

参与人数 2黑马币 +7 收起 理由
wyh2016 + 5 神马都是浮云
guojiayuan + 2

查看全部评分

4 个回复

倒序浏览
哎,都看不懂,大神啥时候交流一下呗!
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
回复 使用道具 举报
不错,very impressed!!!
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马