
正文
Java代码各类资源共享 基于java的资源共享平台的设计与实现
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Java编程多个线程如何访问同一个共享资源
如果该方法不涉及写公共的资源比如一个静态的变量或者写文件,修改某个数据库的值的时候没有影响
比如你这个类里的方法只是对输入的参数做一个计算然后返回计算的值就没有影响。
但是如果是修改公共的资源比如修改数据库中存储的一个value则有可能出现问题,如:
public void writeDb(String key, String value) {
collectiondb();
write(key, value);
closeDbCollection();
}
因为Java的线程运行顺序是不一定的,可以第一个线程运行完连接数据库到后挂起了,这时候第二个线程开始运行,如果你的collectiondb()处理使用的是类中的一个实例变量Connection conn来保存数据库的连接,当第二个线程运行完毕以后conn也被关闭了,第一个线程继续执行write函数写数据库值的时候就会抛出异常。
这是一个例子,还有其他可能产生脏数据的问题
多线程如果使用公共资源的话最好在方法上声明synchronized关键字让其同步
相关问答
Q1: JAVA多线程的资源共享和死锁问题。
Thread thread1 = new Thread(new Test(true));
对象里面Java代码各类资源共享的flag 为 true;会获得Lock.lock1
Java代码各类资源共享的锁Java代码各类资源共享,
Thread thread2 = new Thread(new Test(false));
对象里面的flag 为 false;会获得Lock.lock2
的锁,
然后thread1 又想获得Lock.lock2,
代码为:
synchronized (Lock.lock2) {
System.out.println("if-lock2");
}
然后thread2 又想获得Lock.lock1,
代码为:synchronized (Lock.lock1) {
System.out.println("else-lock1");
}
这样就相互等待了,形成了死锁
Q2: java的代码分享网站有哪些?
1. java2s
这个网站非常好Java代码各类资源共享,分成三大类Java代码各类资源共享,分别是Example 、Products 、 Articles Java代码各类资源共享,每个大类下又分别设许多小类Java代码各类资源共享,还有搜索功能,这样查找起来非常方便。。比如,如果要学习SWT/JFace,只要把Example下的SWT JFace Eclipse 研究一下也就可以了。另外,这个网站还有JavaScript DHTML 、 C# / C Sharp 、 C / ANSI-C 、 SQL / MySQL 等类。总之,非常好。
2. codeZoo
这是O'Reily旗下的,除了Java之外,还有Ruby、Python。
3. Java学习源代码检索系统
难得看见国产的,好歹也要支持一下,分类也算清楚。
4. Koders
是个综合查询的网站,不过它好像是从代码中查找关键词,包含的语言挺多的。
5. Resources for Java server-side developers
确切的说,它是一个资源收集的网站,代码查询并不多。不过它分类相当细,如Articles、Books、Examples、Extensions、Frameworks等类,Java代码各类资源共享你可以输入Spring或Hibernate作为关键词搜索一下看看。
-----
Q3: java中Thread类与Runnable接口实现资源共享的疑问
public
class
ThreadNotShare
extends
Thread{
private
int
share
=
5;
public
void
run(){
for(int
i
=
;
i
50
;
i++)
if(this.share
0){
System.out.println("shar
=
"
+
this.share--);
}
}
public
static
void
main(String
args[])
{
ThreadNotShare
t1
=
new
ThreadNotShare();
ThreadNotShare
t2
=
new
ThreadNotShare();
ThreadNotShare
t3
=
new
ThreadNotShare();
t1.start();
t2.start();
t3.start();
}
}
上面是一个继承Thread之后,因为由一个线程类分别构造Java代码各类资源共享了3个对象,所以各自有各自Java代码各类资源共享的数据,对象之间是数据不共享Java代码各类资源共享的
至于楼主的问题
例二表面看是继承了一个Thread类,但是调用的方法依旧是把一个线程类的对象交给Thread去构造,和实现Runnable接口在本质上没有任何区别不是吗,都是由一个对象构造出的线程,当然是共享同一份数据了
Q4: JAVA中是继承不能实现资源共享而接口可以实现资源共享吗?
接口内部变量默认为public属性,所以实现这个接口的类,是能完全访问接口内变量的。
某种程度达到了你的要求。
另外,如果类内对象定义为protected属性,那么继承的手段也能完全资源共享
关于Java代码各类资源共享和基于java的资源共享平台的设计与实现的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。








