您的位置:首页 > 编程语言 > Java开发

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

2017-08-31 15:11 281 查看

做的东西

下面的代码实现了一个模型,那就是开了五个线程,大家共同维护一个状态,一起数数,一直到有人数到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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: