zoukankan      html  css  js  c++  java
  • [javaSE] 看博客学习java并发编程

    共享性

    多线程操作同一个数据,产生线程安全问题

    新建一个类ShareData

    设计一个int 型的成员变量count

    设计一个成员方法addCount(),把count变量++

    在main函数中开启多个线程操作这个成员变量,在main函数里

    获取ShareData对象,new 出来

    使用for循环10次,在循环中开启线程,模拟10个线程并发,在循环内

    获取Thread对象,new出来,构造函数参数:Runable对象

    匿名内部类实现Runable接口,重写run()方法

    调用Thread.sleep(1000),使线程睡眠一秒,增加出现问题的概率

    使用for循环100次,调用addCount()方法

    调用Thread.sleep(3),主程序睡眠3秒,保证上面的线程全部执行完了

    打印count变量

    调用Thread对象的start()方法

    package com.tsh.mthread;
    
    public class Home {
        public int count;
    
        public static void main(String[] args) {
            final Home home = new Home();
    
            for (int i = 0; i < 10; i++) {
                Thread t = new Thread(new Runnable() {
                    @Override
                    public void run() {
                        for (int j = 0; j < 100; j++) {
                            home.addCount();
                        }
    
                        try {
                            Thread.sleep(1000);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                        System.out.println(Thread.currentThread()+":"+home.count);
                    }
                });
                t.start();
            }
            // 睡三秒等等上面的
            try {
                Thread.sleep(3000);
            } catch (Exception e) {
                e.printStackTrace();
            }
            System.out.println("总计:" + home.count);
        }
    
        public void addCount() {
                count++;
        }
    }

    互斥性

    使用synchronized关键字修饰上面的addCount()方法,当前线程操作时加把锁,同时只允许一个访问者对资源进行访问,具有唯一性和排他性

        public synchronized void addCount() {
                count++;
        }

    使用synchronized修饰代码块

        public void addCount() {
            synchronized (this) {
                count++;
            }
        }
  • 相关阅读:
    Android开发之Sqlite的使用
    ZOJ 3607 Lazier Salesgirl
    ZOJ 3769 Diablo III
    ZOJ 2856 Happy Life
    Ural 1119 Metro
    Ural 1146 Maximum Sum
    HDU 1003 Max Sum
    HDU 1160 FatMouse's Speed
    Ural 1073 Square Country
    Ural 1260 Nudnik Photographer
  • 原文地址:https://www.cnblogs.com/taoshihan/p/5431636.html
Copyright © 2011-2022 走看看