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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 宋超2356 中级黑马   /  2014-4-15 11:47  /  848 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 宋超2356 于 2014-4-15 15:59 编辑
  1. public class TestSync implements Runnable {
  2.   Timer timer = new Timer();
  3.   public static void main(String[] args) {
  4.     TestSync test = new TestSync();
  5.     Thread t1 = new Thread(test);
  6.     Thread t2 = new Thread(test);
  7.     t1.setName("t1");
  8.     t2.setName("t2");
  9.     t1.start();
  10.     t2.start();
  11.   }
  12.   public void run(){
  13.     timer.add(Thread.currentThread().getName());
  14.   }
  15. }

  16. class Timer{
  17.   private static int num = 0;
  18.   public synchronized void add(String name){
  19.           //synchronized (this) {
  20.             num ++;
  21.             try {Thread.sleep(1);}
  22.             catch (InterruptedException e) {}
  23.             System.out.println(name+", 你是第"+num+"个使用timer的线程");
  24.           //}
  25.   }
  26. }
复制代码
类似 synchronized的用法里,如果一个方法被 synchronized修饰,但是其他方法还可以访问它里面的变量是么?

评分

参与人数 1技术分 +1 收起 理由
黑妞~ + 1

查看全部评分

2 个回复

倒序浏览
?synchronized可以修饰类?类的修饰符不是只有public abstract 和final吗?synchronized不是用在方法上和方法内部的吗?
回复 使用道具 举报
synchronized是将多个方法或方法体做记号,使其能够共享一个数据。例如:
你是煤炭厂商,你签约了给你运煤的厂商和拉走煤的厂商。由你定义好的同步,即只有运来煤后,拉走煤的
厂商才能来拉煤。
所以他是不能修饰类的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马