Java多线程互斥访问变量
来源:互联网 发布:网络控制开关 编辑:程序博客网 时间:2024/06/05 19:24
Java多线程互斥访问比较简单,在方法前面加上synchronize修饰则变为同步方法。下面是例子:
class WorkThread extends Thread{ private CourruptedData data = null ; private int type = 0 ; public WorkThread(CourruptedData _data,int _type){ data = _data ; type = _type ; super.start(); } public void run(){ data.performWork(type); }}public class CourruptedData { protected static int display = 1 ; protected static int change = 2 ; private WorkThread slowWorker = null ; private WorkThread fastWorker = null ; private int number = 0 ; public CourruptedData() { number = 1 ; slowWorker = new WorkThread(this,display);//-----------慢进程先启动; fastWorker = new WorkThread(this,change); } /* * 关键字为synchronized时,方法修饰为同步方法, * 慢线程调用performWokr()时,休眠两秒; * 此时,不允许第二个线程打断第一个线程; * 等第一个线程执行完毕之后,第二个线程才能将number改为-1; */ public synchronized void performWork(int type){ if (type == display) { System.out.println("Number before sleeping:" + number); try{ slowWorker.sleep(2000); }catch (InterruptedException ie){ System.out.println("Error : "+ie); } System.out.println("Number after working up:"+ number); } if (type == change) number = -1 ; } public static void main(String args[]) { CourruptedData test = new CourruptedData(); }}
程序运行结果为:
当去掉performWork()方法的 synchronized 修饰之后,程序运行结果为:
0 0
- Java多线程互斥访问变量
- java多线程资源互斥访问
- java多线程互斥访问小例子
- Java中多线程互斥访问的实现
- 多线程static变量的同步互斥
- linux c++ 多线程 互斥访问
- Java多线程之互斥
- java 多线程访问共享变量不安全因素分析
- java多线程互斥实战-模拟串口资源互斥
- 浅谈单片机中变量访问的互斥
- 白话windows多线程同步之互斥变量
- C++11多线程同步之互斥变量使用学习
- Java多线程间的同步互斥
- java多线程(二)线程的互斥
- java 多线程的互斥代码
- JAVA多线程互斥同步例子
- java多线程:3、线程互斥
- Java多线程-----互斥与同步
- 南阳OJ36-最长公共子序列(LCS)
- EventBus 消息总线
- PHP PDO访问数据库
- java访问mongodb的基本操作
- 【Cocos2d-x】基本的几个类
- Java多线程互斥访问变量
- Java中关于三目运算符理解和简单应用.
- hdoj 1312 Red and Black【dfs,回溯】
- linux常用命令
- KEILV5之工程建立工程
- java虚拟机内存溢出,eclipse配置
- 【.Net码农】Jquery+ashx实现Ajax
- C++虚基类的作用
- Tomcat端口占用