zqs164 2018-05-05 16:50 采纳率: 60%
浏览 816
已采纳

java synchronized 同步问题

请问通过下面这种方法能起到防止haha()和run()中的synchronized中的内容同时执行的作用吗?

 public class A{
     public synchronized void haha(){

     }
     class B extends TimerTask{
        @Override
        public void run(){
            synchronized(A.this){

            }
        }
     }
 }
  • 写回答

12条回答 默认 最新

  • 默默悟问 2018-05-06 04:17
    关注
     public class A{
      int value = 0;
    
      final int NUMBER = 1000000;
    
        public synchronized void haha(){
            for (int i = 0; i < NUMBER; i++)
                value ++;
      }
    
      class B extends TimerTask{
         @Override
         public void run(){
             synchronized(A.this){
                for (int i = 0; i < NUMBER; i++)
                    value ++;
             }
         }
      }
    
      public static void main(String args[]) throws InterruptedException {
        A a = new A();
        B b = a.new B();
    
        ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(2);
    
        executor.scheduleWithFixedDelay(b, 1, 1, TimeUnit.SECONDS);
        executor.scheduleWithFixedDelay(new Runnable() {
    
                @Override
                public void run() {
                    a.haha();
                }
    
        }, 1, 1, TimeUnit.SECONDS);
    
        Thread.sleep(1000 * 9 + 500);
    
        executor.shutdownNow();
    
        System.out.printf("value: %d\n", a.value);  
      }
    
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(11条)

报告相同问题?

悬赏问题

  • ¥15 单通道放大电路的工作原理
  • ¥30 YOLO检测微调结果p为1
  • ¥20 求快手直播间榜单匿名采集ID用户名简单能学会的
  • ¥15 DS18B20内部ADC模数转换器
  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题