package threadTest;//import java.util.concurrent.ExecutorService;//import java.util.concurrent.Executors;public class TestUnSynchronizedThread {/*** @param args* @throws InterruptedException*/public static void main(String[] args) throws InterruptedException {// TODO Auto-generated method stub// ExecutorService exec = Executors.newCachedThreadPool();// for (int i = 0; i < 6; i++) {// exec.submit(new Runnable() {// @Override// public void run() {// System.out.println(Thread.currentThread().getName());// }// });// }// System.out.println(Counter201521123094.getId());// System.out.println("main end");// exec.shutdown();Thread t1 = new Thread(new Adder());Thread t2 = new Thread(new Adder());Thread t3 = new Thread(new Adder());Thread t4 = new Thread(new Subtracter());Thread t5 = new Thread(new Subtracter());Thread t6 = new Thread(new Subtracter());t1.start();t2.start();t3.start();t4.start();t5.start();t6.start();t1.join();t2.join();t3.join();t4.join();t5.join();t6.join();System.out.println(Counter201521123094.getId());System.out.println("main end");}}class Adder implements Runnable {@Overridepublic void run() {for (int i = 0; i < 10000; i++)Counter201521123094.addId();System.out.println(Thread.currentThread().getName() + " end");}}class Subtracter implements Runnable {@Overridepublic void run() {for (int i = 0; i < 10000; i++)Counter201521123094.subtractId();System.out.println(Thread.currentThread().getName() + " end");}}class Counter201521123094 {private static int id = 0;public synchronized static void addId() {id++;}public synchronized static void subtractId() {id--;}public static int getId() {return id;}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。