java多线程共同工作,利用synchronized关键字

来源:互联网 发布:餐厅收银软件 免费 编辑:程序博客网 时间:2024/05/24 04:58

做的东西

下面的代码实现了一个模型,那就是开了五个线程,大家共同维护一个状态,一起数数,一直到有人数到1500为止。

思路

把数数的那部分代码同步(synchronized),同步之后五个线程每次都进去数数都有锁的状态,然后找到当时对应的变量,然后+1输出自己的状态,最后到count变量为1500时,停止输出。

注意事项

注意开的线程必须来自于不同的对象,不然的话锁就是相同的,这样的话最后锁被一个线程所占据,最后一个线程就干完了所有的活,所以注意要开多个对象

实现的代码

package Thread;public class SynThreadMain {    public static void main(String[]  args) throws InterruptedException{//      SyncThread tt = new SyncThread();//      SyncThread tw = new SyncThread();//      Thread t1 = new Thread(tt,"A线程");//      Thread t2 = new Thread(tw,"B线程");//      t1.start();//      t2.start();               //最基础的线程版本        //线程组版本        final int THREAD_NUM = 5;        Thread threads[]  = new Thread[THREAD_NUM];        for(int i=0;i<THREAD_NUM;i++){            threads[i] = new Thread(new SyncThread(),"线程"+i);            threads[i].start();        }    }}class SyncThread implements Runnable{    private  static int count;    public SyncThread(){      //构造函数用来初始化用        count = 0;    }    public  synchronized  void method(){        //count++;        do{            count++;            System.out.println(Thread.currentThread().getName()+" :"+count);            //if(count==)        }while(count<1500);    }    public synchronized void run(){        method();    }}