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

xiaoxiao2021-02-28  96

做的东西

下面的代码实现了一个模型,那就是开了五个线程,大家共同维护一个状态,一起数数,一直到有人数到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(); } }
转载请注明原文地址: https://www.6miu.com/read-40089.html

最新回复(0)