`
tangkuo
  • 浏览: 101014 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

线程同步锁处理 * 利用类的字节码文件对象唯一

 
阅读更多
package cn.itcast.heima2;
/**
* java 线程同步锁处理
* 利用类的字节码文件对象唯一
*
* @author Administrator
*
*/
public class TraditionalThreadSynchronized {

/**
* @param args
*/
public static void main(String[] args) {
new TraditionalThreadSynchronized().init();
}

private void init(){
final Outputer outputer = new Outputer();
new Thread(new Runnable(){
@Override
public void run() {
while(true){
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
outputer.output("zhangxiaoxiang");
}

}
}).start();

new Thread(new Runnable(){
@Override
public void run() {
while(true){
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
outputer.output3("lihuoming");
}

}
}).start();

}

static class Outputer{

public void output(String name){
int len = name.length();
synchronized (Outputer.class)
{
for(int i=0;i<len;i++){
System.out.print(name.charAt(i));
}
System.out.println();
}
}

public synchronized void output2(String name){
int len = name.length();
for(int i=0;i<len;i++){
System.out.print(name.charAt(i));
}
System.out.println();
}

public static synchronized void output3(String name){
int len = name.length();
for(int i=0;i<len;i++){
System.out.print(name.charAt(i));
}
System.out.println();
}
}
}













package cn.itcast.heima2;

import java.util.HashMap;
import java.util.Map;
import java.util.Random;
/**
* 多账户操作余额的增加与减少
* 每个线程共享数据,互相不影响对方操作,事物提交。
* 通过线程对应得名称为key保存对应操作线程对应得值。
* @author Administrator
*
*/
public class ThreadScopeShareData {

private static int data = 0;
private static Map<Thread, Integer> threadData = new HashMap<Thread, Integer>();
public static void main(String[] args) {
for(int i=0;i<2;i++){
new Thread(new Runnable(){
@Override
public void run() {
int data = new Random().nextInt();
System.out.println(Thread.currentThread().getName()
+ " has put data :" + data);
threadData.put(Thread.currentThread(), data);
new A().get();
new B().get();
}
}).start();
}
}

static class A{
public void get(){
int data = threadData.get(Thread.currentThread());
System.out.println("A from " + Thread.currentThread().getName()
+ " get data :" + data);
}
}

static class B{
public void get(){
int data = threadData.get(Thread.currentThread());
System.out.println("B from " + Thread.currentThread().getName()
+ " get data :" + data);
}
}
}




分享到:
评论

相关推荐

    后端开发基础知识整理JAVA、JVM、操作系统、网络、设计模式、mysql、redis、多线程、spring、springboo

    - **JVM (Java Virtual Machine)**:是Java虚拟机,负责执行字节码。 - **JRE (Java Runtime Environment)**:包含JVM和核心类库,用于运行Java程序。 - **JDK (Java Development Kit)**:包含了JRE以及编译、...

    Java经典面试题+答案(带书签)pdf

    - 必须确保所有访问共享资源的线程都通过相同的锁进行同步。 **10. 线程的优先级** - 线程的优先级用于指示调度器应如何调度线程。 - Java中线程的优先级范围通常是1到10。 **11. 线程获取名称** - 线程名称可以...

    黑马程序员入学Java知识

    - Java程序首先被编译成字节码(.class文件),然后由JVM解释执行。 - JVM负责内存管理、垃圾回收等底层工作,使得开发者可以专注于业务逻辑。 7. **学习Java注意的地方** - 理解面向对象的概念。 - 掌握异常...

    Java工程师面试宝典

    - **线程同步**:使用 `synchronized` 关键字或者 `ReentrantLock` 类进行锁管理,防止多个线程同时访问共享资源导致的问题。 - **线程通信**:通过 `wait()` 和 `notify()` 方法实现线程间的协作。 #### 2. Java...

    黑马面试宝典知识点复习

    - **对象头初始化**:设置对象头的信息,如对象所属的类、锁状态标志、线程持有的锁等。 - **初始化**:执行构造器初始化成员变量。 ### Web技术 - 包括但不限于HTTP协议、Servlet、JSP等技术,用于构建Web应用程序...

    Java面试题和答案.pdf

    - **BIO**: 同步阻塞IO,每个连接都需要一个线程处理。 - **NIO**: 同步非阻塞IO,基于缓冲区和选择器机制,减少了线程数量。 - **AIO**: 异步非阻塞IO,基于事件和回调机制,更高效。 **17. `Files`的常用方法都有...

    深入理解JVM

    6. **类文件结构**:了解.class文件的内部结构,包括魔数、版本号、常量池、字段表、方法表、属性表等,有助于理解JVM如何解析字节码。 7. **字节码指令集**:JVM执行的是字节码指令,如iconst、iload、...

    周阳大神高级+面试经验+Java面试题.txt

    - **程序计数器**: 是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。 - **Java虚拟机栈**: 描述的是Java方法执行的内存模型,每个方法在执行的同时都会创建一个栈帧用于存储局部变量表、操作...

    大厂的Android面试题.pdf

    - Java虚拟机(JVM)是执行Java字节码的虚拟环境。 - JVM包含内存管理、垃圾回收、线程管理和安全机制等功能。 5. **视频加密传输** - 视频加密传输涉及SSL/TLS协议的应用,确保数据在传输过程中的安全性。 - ...

    Java虚拟机规范 深入java虚拟机

    它详细阐述了Java虚拟机(JVM)的工作原理,包括内存管理、类加载机制、字节码执行以及垃圾回收等核心概念。深入理解这些知识点对于提升程序性能、解决运行时问题以及设计高效的应用程序至关重要。 1. **JVM架构** ...

    2014支付宝面试题 笔试和面试

    - **程序计数器**:当前线程所执行的字节码的行号指示器。 - **本地方法栈**:为实现本地方法服务。 ### 3. SQL优化原理 SQL优化主要是提高查询效率的过程。主要包括以下方面: - **索引优化**:合理创建索引可以...

    Java面试宝典

    - `wait()`是`Object`类的方法,会使当前线程等待,直到被其他线程唤醒或达到指定时间,同时会释放对象锁。 8. **实现同步的方式** - 使用`synchronized`关键字。 - 使用`ReentrantLock`类。 - 使用`Semaphore`...

    2021-2022计算机二级等级考试试题及答案No.11367.docx

    25. **同步代码块的锁对象**:在Java中,同步代码块通过指定一个锁对象来确保线程安全。这个锁对象可以是任意类型的对象,只要能唯一标识同步代码块即可。正确。 #### 存储过程与存储函数的区别 26. **存储过程与...

    2018年JAVA架构师面试后的问题汇总-word范文 (2页).docx

    实现线程安全的方法包括同步机制(synchronized)、锁(Lock)、原子变量(Atomic类)等。 4. **抽象类与接口**: 抽象类是一种不能实例化的类,可以包含抽象方法和非抽象方法;接口则只包含抽象方法和常量,提供...

    计算机面试资料总结

    常见的同步机制包括信号量、互斥锁等。例如,信号量可以通过增加一个计数器来跟踪资源的可用性,并通过wait和signal操作来管理对资源的访问。 - **进程通信**:进程间通信(IPC)是指运行在同一系统上的不同进程之间...

    Java类加载.pdf

    类加载器(ClassLoader)是Java虚拟机(JVM)的一部分,负责将类的字节码(.class文件或通过网络获取的字节流)转换为Java对象。Java类加载分为三个主要阶段:加载、验证和初始化。加载阶段,ClassLoader会从指定的...

    Java虚拟机规范(Java SE 7).pdf

    1. 类文件结构:Java源代码经过编译后生成字节码文件,即.class文件,这是JVM直接运行的单元。每个类文件包含常量池、字段表、方法表、属性表等结构,这些内容定义了类的元数据。 2. 指令集:JVM使用一种简单的、栈...

    深入理解Jaca虚拟机(第二版)(彩色高清).pdf

    它提供了运行Java应用程序所需的运行时环境,并负责管理内存、执行线程以及处理类文件结构等任务。深入理解JVM对于提高Java程序性能至关重要。 ### JVM的架构与组成 #### 类加载器系统 类加载器是JVM的重要组成...

    黑马程序员入学Java知识(精华总结)

    Java程序的运行机制是先通过编译器将源代码(.java文件)编译成字节码文件(.class文件),再由JVM加载并执行。学习Java时,应注意其特定的语法格式,例如使用分号结尾、大括号表示代码块等。代码注释是程序员为了...

Global site tag (gtag.js) - Google Analytics