一,java中使用Thread类实现多线程。

1,如果有两以上的线程同时访问同一个共享资源,可能造成线程冲突,线程冲突会造成数据丢失、重复等严重问题。

以下通过两个线程同时访问同一个类,来表现线程冲突,如果产生冲突便会打印输出。

例:

package Thread;public class Tested {String name;public static void main(String[] args) {Tested b=new Tested();Thread a=new Thread() {public void run() {try {while(true) {Thread.sleep(2000);b.aa("ls");}} catch (InterruptedException e) {// TODO Auto-generated catch block
                    e.printStackTrace();}}};a.start();Thread e=new Thread() {public void run() {try {while(true) {Thread.sleep(2000);b.aa("aas");}} catch (InterruptedException e) {// TODO Auto-generated catch block
                    e.printStackTrace();}}};e.start();}public void aa(String name) {this.name=name;eqrr(name);}public void eqrr(String name) {if(!(name==this.name)) {System.out.println(this.name+""+name);}}
}

2,解决方法可以使用synchronized关键字让线程同步。

例:

package thinkmore;import java.util.Scanner;/*线程的冲突在多个线程访问同一个对象的同一个属性时,才会出现线程冲突,线程冲突会造成数据丢失、重复等严重问题。为了避免这个问题可以synchronized关键字让线程同步。*/
public class Test {String name;public static void main(String[] args) {final Test obj=new Test();final Test obj2=new Test();final Thread t=new Thread(){@Overridepublic  void run(){while (true){try {obj.setName("张三");Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}};t.start();final Thread t2=new Thread(){@Overridepublic  void run(){while (true){try {obj2.setName("李四");Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}};t2.start();}/*   1,放在函数中锁住整个函数,只有前一个线程执行完下一个函数才能访问   2,放在代码块中,锁住需要共享的资源,推荐使用   */public /*synchronized*/  void setName(String name){// synchronized(this) {this.name = name;equalsName(name);// }
    }public void equalsName(String name){if(name!=this.name)System.out.println(name+" "+this.name);}
}

转载于:https://www.cnblogs.com/dybe/p/8039791.html

java:多线程的 共享资源冲突问题相关推荐

  1. Java-如何解决多线程当中共享资源的冲突问题

    解决多线程当中共享资源冲突的问题 1. 冲突问题展示: /** 共享资源冲突的问题*/ class SingleThread implements Runnable {// 共享资源,100张票pri ...

  2. 请求模式解决共享资源冲突

    文章目录 1 请求模式解决共享资源冲突 1 请求模式解决共享资源冲突 原有方式: 我们可以对其进行改进,统一处理: 代码如下: /*** @brief tOS应用示例* @details* @auth ...

  3. 任务与中断共享资源冲突示例

    文章目录 1 任务与中断共享资源冲突示例 1 任务与中断共享资源冲突示例 演示代码如下: /*** @brief tOS应用示例* @details* @author 01课堂 李述铜 http:// ...

  4. java多线程信息共享 多线程管理

    java多线程信息共享 & 多线程管理 信息共享 多线程管理 信息共享 继承Thread的类通过static共享变量: 实现Runnable接口的类私有变量即可. 对于信息共享数据不一致的问题 ...

  5. Java多线程变量共享与隔离

    文章目录 线程相关 线程的相关API 线程的调度 线程的优先级 方法和变量的线程安全问题 静态方法 非静态方法 静态变量 实例变量 局部变量 变量共享 共享变量线程安全问题 可见性 可见性举例 共享变 ...

  6. python多线程资源共享_Python:关于多处理/多线程和共享资源的问题

    以下是我目前发现的最简单的多线程示例:import multiprocessing import subprocess def calculate(value): return value * 10 ...

  7. 多线程对共享资源的访问

    一.什么是多线程? 线程是程序中一个单一的顺序控制流程.在单个程序中同时运行多个线程完成不同的工作,称为多线程. 所有的线程虽然在微观上是串行执行的,但是在宏观上你完全可以认为它们在并行执行 二.那什 ...

  8. 多线程共享java_java多线程之共享资源

    转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/42587821 作者:小马 先看一个示例, 多个计数器线程实例(TwoCounter ...

  9. java访问局域网共享资源

    本地要读取存在另一台计算机上的文件,两台主机在同一局域网中,互相拷贝费时费力.只需将要访问的资源设置成资源共享,就可以在局域网其他主机读取该文件. 首先,将要访问文件所在文件夹设置为"共享文 ...

最新文章

  1. python执行提示包找不到的问题
  2. iOS开发中乱用hook可能导致灾难
  3. mysql bin的过期时间_Mysql设置binlog过期时间并自动删除
  4. 【Network Security!】Linux中apt-get update和apt-get upgrade命令的区别
  5. html手机广告倒计时弹屏6,广告弹窗关闭倒计时(示例代码)
  6. 入门 | 如何为你的回归问题选择最合适的机器学习方法?
  7. mysql 迁移 nosql_从关系型Mysql到Nosql HBase的迁移实践
  8. lua中table的常用方法
  9. sessionattribute 被spring 扫描不到_Spring 系列之 Spring 常用注解总结(肝硬化的干货)...
  10. 使用 Gogs 搭建自己的 Git 服务器
  11. 台式计算机拆解与安装,台式机固态硬盘安装流程拆解
  12. Android 64bit系统中app以32bit运行
  13. python在大数据分析中的应用
  14. 【数据异常校验】T检验或T测试(T-test)
  15. 单片机毕业设计 stm32智能路灯设计与实现
  16. ERP系统到底能做什么?
  17. 秋夜寄邱员外 / 秋夜寄丘二十二员外
  18. git rebase -i_git rebase -i改变生活的魔力
  19. 设计模式(模板方法,备忘录,命令)
  20. git+github

热门文章

  1. 2016年如何用正确的姿势抢“头条”?
  2. u盘的大小在计算机无法显示,U盘格式化后插入电脑打不开,不显示U盘大小怎么解决?...
  3. Visual Studio Code下c语言环境的安装与运行
  4. 后端——》Java程序推送微信订阅消息
  5. ros建图过程中给上位机发布地图信息
  6. 网易2019实习生招聘编程题
  7. echarts xAxis字显示不全
  8. ardruino控制继电器_Arduino基础入门篇24—继电器控制
  9. yamlip 安装_SpringBoot中yaml配置对象
  10. php header 转向,php使用header函数的http头设置大全(包含301转向及404状态)