无名 发表于 2022-5-8 18:41:23

【HC】简单理解实咧

实例一、静态方法的同步处理public class DataCopyA {        public static void main(String[] args) {      task(0, 5*1000*1);      DataCopyB.task(0, 5 * 1000 * 1);        }        public static void task(long time, long time2) {                Timer timer = new Timer();                TimerTask task = new TimerTask() {                        @Override                        public void run() {                                String str ="DataCopy-A";                //断点打于此处,进入方法体就会阻塞DataCopy-B的输出                                DataCopyA.selectSql(str);                        }                };                timer.schedule(task, time, time2);        }                protected synchronized static void selectSql(String str) {                System.out.println("--------------------");                System.out.println(Thread.currentThread());                System.out.println(str);        }        }public class DataCopyB {        public static void task(long startTime, int time2) {                Timer timer = new Timer();                TimerTask task = new TimerTask() {                        @Override                        public void run() {                                String str ="CopyData-B";                                DataCopyA.selectSql(str);                        }                };                timer.schedule(task, startTime, time2);        }}实例二、对同一对象的非静态方法处理public class DataCopyA {        private DataCopyA() {}        private static DataCopyA dataCopyA = new DataCopyA();        public static DataCopyA getInstance() {                return dataCopyA;        }        public static void main(String[] args) {      task(0, 5*1000*1);      DataCopyB.task(0, 5 * 1000 * 1);        }        public static void task(long time, long time2) {                Timer timer = new Timer();                TimerTask task = new TimerTask() {                        @Override                        public void run() {                                String str ="DataCopy-A";                //断点打于此处,进入方法体就会阻塞DataCopy-B的输出                                DataCopyA.getInstance().selectSql(str);                        }                };                timer.schedule(task, time, time2);        }                protected synchronized void selectSql(String str) {                System.out.println("--------------------");                System.out.println(Thread.currentThread());                System.out.println(str);        }        }public class DataCopyB {        public static void task(long startTime, int time2) {                Timer timer = new Timer();                TimerTask task = new TimerTask() {                        @Override                        public void run() {                                String str ="CopyData-B";                                DataCopyA.getInstance().selectS
http://cdn.u1.huluxia.com/g3/M01/36/E4/wKgBOV3H1CaAUfJyAAB7c6R6rKQ545.jpg
页: [1]
查看完整版本: 【HC】简单理解实咧