一、使用原因
多线程使用原因:
一块大蛋糕太大了,一天内还需要吃完,不然就坏了,一个人吃不完,所以需要两个人吃,但是只有一个勺子,如果A吃的时候不小心把勺子弄丢了。需要花时间找,那么B就不能吃。所以就需要使用多线程。给两个勺子,就算A吃的时候丢了,B也可以不受到影响。继续执行下去。
同步锁的使用原因:
吃蛋糕的时候,因为两个人不停的吃。A吃的快,B吃的慢。就导致了,A吃撑了了,B反而没吃饱。不是我们想看到的事情。所以需要一个抢盘子(同步锁),A抢到盘子先吃四分之一,B等着。等A吃完后,B继续抢。如果抢到了,B吃。如果没抢到,那么A再吃四分之一后,就让给B。
二、代码体现
同步代码块:
synchronized(Object obj){
//code
}
同步方法:
public synchronized void method(){//code}
三、代码案例
package com.synchronized_test;
/**
* 人类
*/
public class Person implements Runnable {
/* 蛋糕对象 */
private Cakes c = new Cakes();