多线程面试题
多线程-用JAVA写一个多线程程序,写四个线程,其中二个对一个变量加1,另外二个对一个变量减1
加1:
import java.util.concurrent.atomic.AtomicLong; public class SafePlusCounter implements Runnable{ public SafePlusCounter(AtomicLong count){ plus(count); } public long plus(AtomicLong count){ long i = count.incrementAndGet(); System.out.println(i); return i; } public void run() { } }
减1:
import java.util.concurrent.atomic.AtomicLong; public class SafeMinusCounter implements Runnable{ public SafeMinusCounter(AtomicLong count){ minus(count); } public long minus(AtomicLong count){ long i = count.decrementAndGet(); System.out.println(i); return i; } public void run() { } }
在main方法启多线程,一共4个,两加两减:
public class SafeCounting { public static void main(String[] args) throws InterruptedException { final AtomicLong count = new AtomicLong(0); for(int i=0;i<100;i++){ SafePlusCounter plusCounter1 = new SafePlusCounter(count); SafePlusCounter plusCounter2 = new SafePlusCounter(count); SafeMinusCounter minusCounter1 = new SafeMinusCounter(count); SafeMinusCounter minusCounter2 = new SafeMinusCounter(count); new Thread(plusCounter1).start(); new Thread(plusCounter2).start(); new Thread(minusCounter1).start(); new Thread(minusCounter2).start(); } System.out.println("final 结果 "+count); } }