线程同步是指当大家共用同一个东西的时候才有必要,使用资源一般只是在程序执行流程的某个环节,多数时间它们是在处理而不是操作资源,比如程序处理完数据后保存到磁盘就只是在保存时使用资源,而处理的时候不使用资源。
我们同步仅对使用资源加锁,处理数据的部分是可以同时并行的,所以我们的桌面型操作系统允许多个任务同时运行,只是在访问磁盘时内部细节中加锁轮,当磁盘机械装置转到哪个扇区时就允许哪个程序来访问。
我们不能对所有的东西都用 synchronized,仅对有可能导致冲突和状态不一致的代码加 synchonized 来锁定这块区域,就是说进入这个块区域之前必须申请锁而且得到锁后运行时其它线程在它释放锁之前不能访问,如果其它线程当前还在处理数据并没有打算使用这个资源的时候就可以在另一个线程中并行运行。
举例说明!不知道恰不恰当,呵呵
你来到了一个只有一个服务员和一个顾客的餐馆,由于你很饿,叫服务员过来点菜,这是服务员却说:对不起,我对这位先生的服务还没有结束。之后就不理你了。------这就是没有使用线程。
用了线程,这个服务员就可以在你和那位顾客之间进行切换,一会为你服务,一会为他服务。
线程不同步------这位服务员正在为那位顾客服务,你却需要服务员的服务,两个人抢夺资源
线程同步---------当你看到服务员忙碌的时候,就等到他执行完当前任务的时候,在找服务员服务。
线程同步,个人觉得一般都是用在多个线程同时访问同一资源的时候!