两个线程(Thread)调用同一个对象(使用Runnable接口的对象ThreadJob)

误区:下一个线程会从上一个线程结束的地方开始

正解:如

public domd implements Runnable{
int blance = 0;
public void run{
for(int i = 0; i < 50; i++){
blance++;
}
} } domd runner = new domd();
Thread t = new Thread(runner);
Thread t =

最后,balance一定被改成100

注意:

class TestSync implements Runnable{
int balance; public void run{ for(int i = 0; i < 20; i++){
increment();
}
} public void increment{
int i = balance;
balance = i + 1;
} }

i = balance;

balane = i + 1

当A线程在i = balance停下来sleep(),假如i被赋值为5

B线程让i被赋值为5,接着把balance改成6

继续改成7

当A线程醒来,继续刚才i=5,接着balance被改成6

//出现覆盖

因此,解决办法:锁(synchronized  原子化--不可分割)

对一个方法public synchronized void increment()

能保证A线程即使sleep(),B线程也无法存取该对象,A醒来后继续

java双线程调用同一个对象+锁的更多相关文章

  1. java线程同步以及对象锁和类锁解析(多线程synchronized关键字)

    一.关于线程安全 1.是什么决定的线程安全问题? 线程安全问题基本是由全局变量及静态变量引起的. 若每个线程中对全局变量.静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的:若有多个线 ...

  2. Java多线程-线程的同步与锁

    一.同步问题提出 线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏.例如:两个线程ThreadA.ThreadB都操作同一个对象Foo对象,并修改Foo对象上的数据. package ...

  3. Java多线程-线程的同步与锁【转】

    出处:http://www.cnblogs.com/linjiqin/p/3208843.html 一.同步问题提出 线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏. 例如:两个线程 ...

  4. java基础Synchronized关键字之对象锁

    java中Synchronized关键字之对象锁    当有多个线程对一个共享数据进行操作时,需要注意多线程的安全问题. 多线程的同步机制对资源进行加锁,使得在同一个时间,只有一个线程可以进行操作,同 ...

  5. [多线程]线程基础(对象锁、class锁、同步、异步)

    synchronized.volatile.ReentrantLock.concurrent 线程安全:当多个线程访问某一个类(对象或方法)时,这个类始终都能表现出正确的行为,那么这个类(对象或方法) ...

  6. java多线程下如何调用一个共同的内存单元(调用同一个对象)

    /* * 关于线程下共享相同的内存单元(包括代码与数据) * ,并利用这些共享单元来实现数据交换,实时通信与必要的同步操作. * 对于Thread(Runnable target)构造方法创建的线程, ...

  7. python3 线程调用与GIL 锁机制

    转载

  8. Java多线程——线程八锁案例分析

    Java多线程——线程八锁案例分析 摘要:本文主要学习了多线程并发中的一些案例. 部分内容来自以下博客: https://blog.csdn.net/dyt443733328/article/deta ...

  9. Java多线程编程核心技术(二)对象及变量的并发访问

    本文主要介绍Java多线程中的同步,也就是如何在Java语言中写出线程安全的程序,如何在Java语言中解决非线程安全的相关问题.阅读本文应该着重掌握如下技术点: synchronized对象监视器为O ...

随机推荐

  1. iOS绘制view

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  2. SharedPreference对象及其xml文件

    SharedPreferences对象----->getXXX SharedPreferences.Editor对象---->putXXX

  3. Rule Or WorkFlow

    The main value of a Workflow engine is that it makes it possible to customize the flows through some ...

  4. ISSkin Pack 3.0 (含预览程序 ISSkinViewer)

    原文 http://restools.hanzify.org/article.asp?id=108 包含 250 款皮肤, 预览程序纯粹的由Inno Setup脚本写成. 足以展示Inno Setup ...

  5. 文艺编程 Literate Programming

    (译注:这篇文章是 Donald Knuth 一篇1983年的论文:Literate Programming 的介绍部分.有人翻译为“字面编程”,是极其错误的说法,literate 根本就没有“字面” ...

  6. vc6.0 使用Ado 连接MS-SqlServer2000 连接字符串

    vc6.0 使用Ado 连接MS-SqlServer2000 连接字符串 分类: C/C++ VC 2012-04-12 20:23 836人阅读 评论(0) 收藏 举报 sql server数据库服 ...

  7. 【LeetCode练习题】Partition List

    Given a linked list and a value x, partition it such that all nodes less than x come before nodes gr ...

  8. UEditor用法

    UEditor是百度的编辑器,界面美观,功能强大,用起来还不错. 详见该链接http://ueditor.baidu.com/ 一.下载 http://ueditor.baidu.com/downlo ...

  9. A. Anton and Letters

    time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...

  10. 【ThinkPHP学习】ThinkPHP自己主动转义存储富文本编辑器内容导致读取出错

    RT. ThinkPHP的conf文件里的Convention.php有一个配置选项 'DEFAULT_FILTER' => 'htmlspecialchars', // 默认參数过滤方法 用于 ...