线程同步处理
线程同步
被多个线程同时访问的资源叫做临界资源,当临界资源被多个线程同时访问的时候会出现一些隐患。
线程的同步就会为我们解决掉这一隐患。
下面列举一些多线程的隐患以及解决方法
public void run(){while(true){if(ticket>0){try {Thread.sleep(10);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName()+"窗口"+(ticket--)+"张票");}else{break;}}}(只写了run方法里的代码)如果有两个线程同时执行会出现隔票或者出现0号票等问题public void run(){while(true){//同步代码块synchronized(this){if(ticket>0){try {Thread.sleep(10);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName()+"窗口"+(ticket--)+"张票");}else{break;}}}}加上synchronized的同步代码块就可以避免出现错误了也可以把方法利用synchronized改成同步函数也是可以避免的。(把synchronized加到void前面)