1.当使用synchronized(this)的时候,同一实例在同一时刻只能有一个synchronize方法执行,所以某个线程在执行自己所属实例的某个同步方法的时候,其他线程不能执行该实例的任何同步方法。但是非同步方法没有这个限制。不同实例的同步方法是可以不同线程同时执行的。要想同一个实例的两个同步方法可以同步执行可以不用synchronized(this),可以用不同的锁对象。
2,。try代码块可以没有catch块有finally块。
3.复杂的锁lock机制,可以用专门一个锁类来实现。例子:http://wenku.baidu.com/view/469a16ea5ef7ba0d4a733b0b.html,java多线程设计模式。
4.semaphore相当于操作系统的信号量,分为两种:1.单值的,即只能有一个线程访问共享资源,2.多值的,可以有多个资源访问资源,用acquire方法使信号量减一,release方法信号量加一,构造函数的布尔值表示是否是公平的模式,公平模式指的是排队线程安装先来先服务的方式得到共享资源。
5.countdownlatch是一个同步操作,等待指定数量的线程执行完毕后,当前线程才接着向下运行。
6.CyclicBarrier :http://www.cnblogs.com/whgw/archive/2011/09/29/2195669.html
7.concurrent包:http://www.docin.com/p-318385327.html
8.如磁盘或者网络设备等io操作都是独立于cpu的,可以将这些操作做成多线程并发,充分利用cpu。
9多线程的应用场景:1.web服务,2.大数据计算;3.io操作,4.模拟程序,5.gui程序 等等