多线程题
Posted 关键步就几步
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程题相关的知识,希望对你有一定的参考价值。
线程安全问题产生的原因:多个线程在操作共享的数据。
解决思路;
就是将多条操作共享数据的线程代码封装起来,当有线程在执行这些代码的时候,其他线程时不可以参与运算的。必须要当前线程把这些代码都执行完毕后,其他线程才可以参与运算。
synchronized(对象)
{
需要被同步的代码 ;
}
1、多个窗口同时卖票,保证票数不<=0
public class MyThread { public static void main(String[] args) throws InterruptedException { Ticket ticket = new MyThread().new Ticket(); //共享数据和操作共享数据的方法最好放在一个类中,这样加锁方便 for (int i = 0; i < 4; i++) {//开启4个窗口同时卖票 new Thread(ticket).start(); } } class Ticket implements Runnable//extends Thread { private int num = 1000;//操作共享数据 Object obj = new Object();//只new一次才能保证锁的唯一性 public void run() { while(true) { if(num>0) { synchronized(obj) { if(num>0) { try{Thread.sleep(10);}catch (InterruptedException e){} System.out.println(Thread.currentThread().getName()+".....sale...."+num--); } } } } } } }
2、
以上是关于多线程题的主要内容,如果未能解决你的问题,请参考以下文章