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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zoudeyong 中级黑马   /  2013-5-1 10:03  /  1473 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 zoudeyong 于 2013-5-1 23:52 编辑

一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

3 个回复

倒序浏览
楼主看以下代码

  1. public class ThreadTest {


  2.         public static void main(String[] args) {
  3.                
  4.                 Test t = new Test();
  5.                 Thread t1 = new Thread(t);
  6.                 t1.start();
  7.                 t.method();

  8.         }

  9. }
  10. class Test implements Runnable{
  11.         public synchronized void run(){
  12.                 for(int i=0;i<1000;i++)
  13.                 {
  14.                         System.out.println("线程已锁正在运行:"+i);
  15.                 }
  16.         }
  17.         public void method(){
  18.                 for(int i=0;i<1000;i++)
  19.                 {
  20.                         System.out.println("----线程未锁正在运行-----"+i);
  21.                 }
  22.         }
  23. }
复制代码
当一个方法加锁后,另一个方法没有加锁,运行的时候,加锁的和没有加锁的会交替运行,也就是另一个线程也可以运行此对象其他方法。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
是可以的,但是要注意对数据的保护
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马