无名商城论坛

搜索
查看: 349|回复: 0

[其他技术] 【HC】简单理解实咧

[复制链接]

1万

主题

1万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
32464
发表于 2022-5-8 18:41:23 | 显示全部楼层 |阅读模式
实例一、静态方法的同步处理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
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表