java多线程问题总结
2016-08-29 19:30
232 查看
1、synchronized关键字修饰的同步函数使用什么对象作为锁?
分为两种情况,如果该函数为静态的则采用所在类的class锁,否则采用this锁,测试用例如下:
进入f1
离开f1
进入f2
我们可以看到,只有当线程t1释放锁后,线程t2才能进入f2,说明同步方法和同步代码块采用的是同一个this锁,class锁的测试则给f1添加static关键字,f2使用test.class锁。
分为两种情况,如果该函数为静态的则采用所在类的class锁,否则采用this锁,测试用例如下:
class test{ public synchronized void f1() throws InterruptedException{ System.out.println("进入f1"); Thread.sleep(5000); System.out.println("离开f1"); } public void f2(){ synchronized (this){ System.out.println("进入f2"); } } } public class thread{ public static void main(String[] args) throws InterruptedException { test t=new test(); Thread t1=new Thread(new Runnable() { @Override public void run() { t.f1(); } }); Thread t2=new Thread(new Runnable() { @Override public void run() { t.f2(); } }); t1.start(); t2.start(); } }输出结果:
进入f1
离开f1
进入f2
我们可以看到,只有当线程t1释放锁后,线程t2才能进入f2,说明同步方法和同步代码块采用的是同一个this锁,class锁的测试则给f1添加static关键字,f2使用test.class锁。
相关文章推荐
- java多线程总结六:经典生产者消费者问题实现
- Java多线程问题总结40个
- java多线程总结六:经典生产者消费者问题实现
- Java多线程面试常见核心问题总结
- java多线程问题总结
- JAVA多线程常见问题总结
- Java多线程操作相关问题总结
- Java多线程问题总结
- 这是我们公司总结的一些关于中文乱码问题的一些解决方案和经验和大家分享!
- ASP.NET与IIS配置问题总结!
- 解决问题总结
- 关于ASPNET在IIS一些问题的经验总结
- Eclipse+Jboss使用小问题总结
- 易混问题总结---(by value VS by reference)
- [导入]关于ASPNET在IIS一些问题的经验总结
- PHP学习技巧总结乱码显示问题,register_global为On的时候,图片上传数据库
- 关于ASP.NET在IIS一些问题的经验总结
- 关于ASPNET在IIS一些问题的经验总结
- Php部分常见问题总结
- 易混问题总结---(equals VS ==)