java 中如何实现多个线程共享一个类

问题描述

java 中如何实现多个线程共享一个类

预想: 一个类 ClassA 中的一个类变量 public static int data = 100;

我起一个main方法 调用 ClassA.data = 200;

再起一个main方法 读取ClassA.data 获取的值就是200?

任意线程修改单例的ClassA 其他线程读取都是最新的
如何做到?

解决方案

java如何实现多个线程并发运行

解决方案二:

启动2个main,不是线程,是进程。

解决方案三:

用final修饰 public final static int data = 100;

解决方案四:

用 java同步锁(synchronized),参考:http://www.blogjava.net/tscfengkui/archive/2010/11/10/337709.html?opt=admin

解决方案五:

进行类锁!对变量进行线程访问加锁

解决方案六:

进行类锁!对变量进行线程访问加锁

解决方案七:

 public static int data = 100;

    public static int getData() {
        return data;
    }

    public synchronized static void setData(int data) {
        ClassA.data = data;
    }

解决方案八:

线程thread,使用同步机制synchronized

解决方案九:

http://blog.csdn.net/evankaka/article/details/44153709

解决方案十:

共享一个类?是共享一个对象吧?同步方法或者用锁

时间: 2024-08-02 22:07:13

java 中如何实现多个线程共享一个类的相关文章

实例解析Java中的synchronized关键字与线程安全问题_实用技巧

首先来回顾一下synchronized的基本使用: synchronized代码块,被修饰的代码成为同步语句块,其作用的范围是调用这个代码块的对象,我们在用synchronized关键字的时候,能缩小代码段的范围就尽量缩小,能在代码段上加同步就不要再整个方法上加同步.这叫减小锁的粒度,使代码更大程度的并发. synchronized方法,被修饰的方法成为同步方法,其作用范围是整个方法,作用对象是调用这个方法的对象. synchronized静态方法,修饰一个static静态方法,其作用范围是整个

Java中使用阻塞队列控制线程集实例_java

队列以一种先进先出的方式管理数据.如果你试图向一个已经满了的阻塞队列中添加一个元素,或是从一个空的阻塞队列中移除一个元素,将导致线程阻塞.在多线程进行合作时,阻塞队列是很有用的工具.工作者线程可以定期的把中间结果存到阻塞队列中.而其他工作者线程把中间结果取出并在将来修改它们.队列会自动平衡负载.如果第一个线程集运行的比第二个慢,则第二个线程集在等待结果时就会阻塞.如果第一个线程集运行的快,那么它将等待第二个线程集赶上来. 下面的程序展示了如何使用阻塞队列来控制线程集.程序在一个目录及它的所有子目

java中使用反射获取pojo(实体)类的所有字段值

       说起反射,不得不说它实在是太强大了,通过反射就可以轻轻松松拿到各种东东,如果你想在项目中解除对某个类的依赖,可以考虑用反射.        今天跟大家分享的是通过java中的反射,获取pojo类的所有字段值.        为什么要做这个操作的呢?主要是为了重写实体类的toString方法.有人会说,直接重写toString方法,返回字段.toString()的字符串不就行了.这么做的确可以,但是如果你的pojo类有上百个,上千个,你还要一个一个改吗?所以我们需要从新的方向去解决.

辨析Java中的String与StringBuffer及StringBuilder字符串类_java

1 StringString:字符串常量,字符串长度不可变. 2 StringBufferStringBuffer:字符串变量(Synchronized,即线程安全).如果要频繁对字符串内容进行修改,出于效率考虑最好使用StringBuffer,如果想转成String类型,可以调用StringBuffer的toString()方法. Java.lang.StringBuffer线程安全的可变字符序列.在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容.可将字符

java中的X509CertImpl 、X509CertInfo、X500Name这些类怎么在JDK帮助文档里找不到了?

问题描述 在使用Java程序签发数字证书时,需要用到X509CertImpl .X509CertInfo.X500Name等类,但这些类好像在JDK 1.6找不到了啊,是怎么回事? 问题补充:zhanjia 写道 解决方案 我觉得你在用你自己的lib替换java5的标准class在eclipse里面设置Windows -> Preferences -> Java -> Compiler -> Errors/Warnings -> Deprecated and trstrict

java中树形索引使用深度遍历的一个例子

以下就提供一个对于树形索引使用深度优先遍历的代码示例,由于代码中涉及到对于别的方法的调用,因此仅供参考,感兴趣的人理解算法思想即可.  代码如下 复制代码 package com.databese.index.bplustree;   import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter;   import com.databese.index.util.Const; import com.da

在java中 如何使按钮点击后 弹出一个新的对话框?

问题描述 package jlabel;import java.awt.Color;import javax.swing.JFrame;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.FileInputStream;import java.io.File;import java.io.InputStream;import javax

剖析Java中的事件处理与异常处理机制_java

一.事件处理其实,由事件处理这个名字自然就想到MFC中的消息响应机制,就我的体会,它们应该算是南桔北枳的情形吧,我怀疑Java中的事件处理这个"新瓶"应是装的MFC中的消息响应这个"旧酒".     所谓的"事件"即如键盘按键.鼠标点击等这类由动作或什么导致某个状态改变并需要对这个改变作相应响应的这类改变.我们可以将Java中的事件分为按钮.鼠标.键盘.窗口.其它事件这几大类.    事件处理模型  1.   基于继承的事件处理模型(JDK1.0

java中同一个方法可以被几个类或者被几个对象共享

问题描述 java中同一个方法可以被几个类或者被几个对象共享 java中同一个方法可以被几个类或者被几个对象共享java中同一个方法可以被几个类或者被几个对象共享 解决方案 方法本质上是字节码序列,底层是指令集合.方法是通过对象调用的,对象是存储在堆中的,是所有线程共享的.方法是类型信息,不存在共享这个说法. 解决方案二: java 中的方法都是在类中的,而对于你说的方法可以被几个类或者几个对象共享,这个问题问的没有多大意义,方法属于类的方法,不会被共享,可以被子类复写和调用. 解决方案三: j