自己在之前做两个项目中遇到多线程并发访问如何解决的一个简单demo程序
2014-03-28 19:06
661 查看
package com.geloin.main; public class TestMoreThread { public static void main(String[] args) { final test t0=new test(); final test t1=new test(); Thread th1=new Thread() { public void run() { t0.function("Thread No1..."); }; }; Thread th2=new Thread(){ public void run() { t1.function("Thread No2..."); }; }; th1.start(); th2.start(); } } class test{ public synchronized static void function(String test){ for(int i=0;i<5;i++){ System.out.println("Current Thread Name is:"+Thread.currentThread().getName()+" executed result is :" +test+i); } } }
总结:
1、在多线程访问中,同步化静态化方法的时候,在类加载的时候就提供了静态方法的入口地址,属于类的访问方法。
2、当多线程访问的时候,如果类中的不同实例共同访问同步化的静态方法时,当一个线程在执行,其他线程就处于等待状态,直到当前线程执行完毕,从中看出不同类的实例共享同一个静态方法的入口地址,因而不会出现线程不安全的问题。
3、如果静态化普通方法则存在线程不安全的问题,由于类的不同对象在实例化的过程中,每个对象都单独拥有自身普通方法的入口地址,所以当多线程的不同对象访问的过程中就会出现并发时的数据不一致的问题,但是如果同步的是同一个对象在多线程访问时,同步化普通方法则不会出现线程不安全问题。
相关文章推荐
- 如何在一个顶级域名下用两个二级域名访问vps下的两个项目网站--完美解决骗
- 安卓AndroidStudio如何在同一个手机中安装两个相同的项目+++++自己处理的一些问题解决方法
- 如何解决多线程并发访问一个资源的安全性问题?
- 新建Android项目,会出现两个项目一个是自己创建的项目,另一个是“appcompat_v7”项目,这是怎么回事呢?该怎么解决呢?
- 什么是高并发?与多线程有什么区别?你的项目有高并发问题吗?是如何解决的?
- 黑马程序员--07.集合框架--并发访问异常理解:一个单线程程序的多线程运行思想【个人总结】
- 在项目中遇到的一个并发访问时session不一致的问题
- php 如何写一个自己项目的安装程序
- 在一个程序中需要用到全局变量(在多个class之间共享数据),请问如何定义具有这种功能的变量?或者是否有其他的方法解决多个class之间的数据共享(尽量简单实现)。 首先应该明确 Java中没有全局变
- php 如何写一个自己项目的安装程序
- [异常解决] 初玩SAE遇到的小问题——注册&创建项目+MyEclipse装插件直接部署+一个简单的JSP部署实现
- tomcat下部署两个工程时,只有一个可以访问,另一个出现404错误,该如何解决
- Github网站加载不完全,响应超时,如何解决 Github是一个代码托管平台和开发者社区,开发者可以在Github上创建自己的开源项目并与其他开发者协作编码。毫不夸张地说,高效利用Github是一
- 利用unix网络编程知识自己动手编写一个chatroom程序中遇到的错误与解决
- 大并发访问同一个不存在的cache的两个解决方法
- 如何将一个项目转为library导入到另一个项目中以及遇到的坑和解决办法
- Playframework - 如何解决两个JPA同时访问一个数据库但是不更新Model的id名字
- 开发Struts 2项目遇到的一个问题,就是在struts-tags标签库下没有了s:datetimepicker标签的解决办法
- 自己做项目中遇到的一些常见问题及解决方法
- 如何在自己的程序中添加appWidget(附简单代码)