黑马程序员技术交流社区

标题: 一个线程的小问题? [打印本页]

作者: zoudeyong    时间: 2013-5-1 10:03
标题: 一个线程的小问题?
本帖最后由 zoudeyong 于 2013-5-1 23:52 编辑

一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
作者: 严露华    时间: 2013-5-1 12:40
楼主看以下代码

  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. }
复制代码
当一个方法加锁后,另一个方法没有加锁,运行的时候,加锁的和没有加锁的会交替运行,也就是另一个线程也可以运行此对象其他方法。
作者: 孙胜    时间: 2013-5-1 13:01
是可以的,但是要注意对数据的保护




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2