美文网首页
非线性安全

非线性安全

作者: Carver_c5f0 | 来源:发表于2017-08-20 23:58 被阅读0次

    线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。

    线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据

    这里举个非线性安全的例子:

    public static void main(String[] args) throws InterruptedException {

    Mythread thMythread=new Mythread();

    final Thread thread1=new Thread(thMythread);

    Thread thread2=new Thread(thMythread);

    Thread thread3=new Thread(thMythread);

    Thread thread4=new Thread(thMythread);

    Thread thread5=new Thread(thMythread);

    thread1.start();

    thread2.start();

    thread3.start();

    thread4.start();

    thread5.start();

    new Thread(new Runnable() {

    @Override

    public void run() {

    // TODO Auto-generated method stub

    try {

    Thread.sleep(100);

    System.out.println(thread1.isAlive());

    } catch (InterruptedException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    }

    }).start();

    }

    class Mythread extends Thread{

    private int sharedate=10;

    @Override

    public void run() {

    // TODO Auto-generated method stub

    System.out.println(--sharedate);

    }

    }

    运行结果是:

    如果你学过操作系统,你就会发现Mythread的sharedata是个共享区呀,怎么能不加锁呢,而在java中有个synchronized的东西,我只需要在run方法加synchronized,就可以实现线程安全了,而添加了这个synchronized 就相当于为这个方法加锁,当有一个线程运行这个方法的时候,其他线程必须要等待这个线程执行完才能执行这个方法。

    相关文章

      网友评论

          本文标题:非线性安全

          本文链接:https://www.haomeiwen.com/subject/xxcqdxtx.html