关于对synchronized的理解
来源:互联网 发布:递归算法的使用场景 编辑:程序博客网 时间:2024/05/01 17:38
当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
今天在论坛中看见这道题,开始也很模糊,最后写了个程序得出如下答案。
如果是同步方法的话是不可以的。
如果是非同步方法的话是可以的。
下面贴出代码:
package Test;public class Test1{public static void main(String[] args){ThreadDemo threadDemo=new ThreadDemo();Thread t1=new ThreadOne(threadDemo);Thread t2=new ThreadTwo(threadDemo);Thread t3=new ThreadThree(threadDemo);t1.start();t2.start();t3.start();}}class ThreadDemo{public synchronized void method1(){for (int i = 0; i < 10; i++){try{Thread.sleep(500);} catch (InterruptedException e){e.printStackTrace();}System.out.println("同步方法1"+" "+ i);}}public synchronized void method2(){for (int i = 0; i < 10; i++){try{Thread.sleep(500);} catch (InterruptedException e){e.printStackTrace();}System.out.println("同步方法2"+" " + i);}}public void Print(){for (int i = 0; i < 10; i++){try{Thread.sleep(500);} catch (InterruptedException e){e.printStackTrace();}System.out.println("非同步方法" + i);}}}class ThreadOne extends Thread{private ThreadDemo threadDemo;public ThreadOne(ThreadDemo threadDemo){this.threadDemo = threadDemo;}public void run(){this.threadDemo.method1();}}class ThreadTwo extends Thread{private ThreadDemo threadDemo;public ThreadTwo(ThreadDemo threadDemo){this.threadDemo = threadDemo;}public void run(){this.threadDemo.method2();}}class ThreadThree extends Thread{private ThreadDemo threadDemo;public ThreadThree(ThreadDemo threadDemo){this.threadDemo = threadDemo;}public void run(){this.threadDemo.Print();}}
定义ThreadDemo类 有三个方法metho1,method2,Print。
其中metho1,method2为同步方法。Print为非同步方法。
如果在主函数中只开启t1.start()和t2.start();则输出结果为
t1输出完后,t2在输出。所以如果是同步方法的话是不可以的。
如果在主函数中只开启t1.start()和t3.start();则输出结果为
t1,Print交替输出。所以如果是非同步方法的话是可以的。
- 关于对synchronized的理解
- 对synchronized 的理解
- 对 synchronized 的理解
- 对synchronized的理解
- 对synchronized关键字的理解
- 对 synchronized 的个人理解
- 关于 @synchronized(self) 的理解
- 关于synchronized的理解记录
- 梳理对Java的synchronized的理解
- 对synchronized(this)的一些理解
- 对synchronized(this)的一些理解
- 对synchronized(this)的一些理解
- 对synchronized(this)的一些理解
- 对Java关键字synchronized的一些理解
- 对synchronized(this)的一些理解
- 对synchronized(this)的一些理解
- 对java中synchronized的一点理解
- 对synchronized(this)的一些理解
- SQL2005错误:"已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行. "解决方法
- asp.net Web Services上传和下载文件(完整代码)
- 关于信号量与线程互斥锁的区别与实现
- 共享Windows下C++库之序列化组件
- 2011福布斯中国潜力企业榜
- 关于对synchronized的理解
- QT版本介绍
- 某些特定的多线程环境下是不是能直接使用HashMap
- 《Java与模式》学习笔记:设计模式——合成(Composite)模式
- QT在ubuntu 11.04下的安装
- VC 加载dm大漠COM 组件的方法
- mysql limit的效率及优化和不支持limit子查询的猜测[数据库]
- RTEMS 应用程序含有多级子目录的Makefile工程文件编写
- Linux静态库