- 浏览: 59598 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
shifulong:
cywhoyi 写道现在用Javassist代理也不错的看了一 ...
java动态代理(jdk &cglib) -
cywhoyi:
现在用Javassist代理也不错的
java动态代理(jdk &cglib)
猜猜下面几个程序,那个是线程安全的
NO1
NO2
NO3
NO4
1 no
2 yes
3 no num=num+1,会生成另一个对象,锁就不唯一了
4 yes Integer 会缓存 -128(固定)~127(默认可配置) 的整数,所以无论多少个Integer(0) 都是一个对象
NO1
public class Main { public static class AddTest extends Thread { private static Integer num = 0; @Override public void run() { for (int i = 0; i < 1000; i++) { num = num + 1; System.out.println("now num is " + num); } } } public static void main(String[] args) throws Exception { for (int i = 0; i < 100; i++) { new AddTest().start(); } } }
NO2
public class Main { public static class AddTest extends Thread { private static Integer num = 0; private static Object lock = new Object(); @Override public void run() { for (int i = 0; i < 1000; i++) { synchronized (lock) { num = num + 1; System.out.println("now num is " + num); } } } } public static void main(String[] args) throws Exception { for (int i = 0; i < 100; i++) { new AddTest().start(); } } }
NO3
public class Main { public static class AddTest extends Thread { private static Integer num = 0; @Override public void run() { for (int i = 0; i < 1000; i++) { synchronized (num) { num = num + 1;// System.out.println("now num is " + num); } } } } public static void main(String[] args) throws Exception { for (int i = 0; i < 100; i++) { new AddTest().start(); } } }
NO4
public class Main { public static class AddTest extends Thread { private static Integer num = 0; private Integer lock = 0; //-128~127 @Override public void run() { for (int i = 0; i < 1000; i++) { synchronized (lock) { num = num + 1; System.out.println("now num is " + num); } } } } public static void main(String[] args) throws Exception { for (int i = 0; i < 100; i++) { new AddTest().start(); } } }
1 no
2 yes
3 no num=num+1,会生成另一个对象,锁就不唯一了
4 yes Integer 会缓存 -128(固定)~127(默认可配置) 的整数,所以无论多少个Integer(0) 都是一个对象
发表评论
-
test
2016-02-26 17:45 510http://c.hiphotos.baidu.com/t ... -
java Integer的比较
2016-01-18 20:09 1079/** * A constant ... -
load过高排查
2016-01-07 19:15 1135jstack 线程的运行情况、线程的状态 load过高的 ... -
Runnable Callable Future FutrueTask ExecutorService的关系
2015-11-30 16:34 705public interface ExecutorSe ... -
单例模式以及序列化仍然单例的问题
2015-11-18 10:47 589这种方式仍然存在并发的同步阻塞问题,并且jdk1.5之 ... -
linux5种网络IO模型
2015-11-07 21:58 897看网上书上的各种解释太绕口难理解了,看到个例子挺好的。 ... -
nio学习记录 : start(buffer channel selector)
2015-11-06 22:17 760Buffer的capacity,limit,positio ... -
desgn partten : 适配器&门面
2015-11-05 11:55 628adapter adapter 一个接口转换成另一个接 ... -
java泛型中的PECS
2015-10-26 17:58 1037extends List<? extends Nu ... -
spring自定义cache
2015-10-21 17:14 4561下面是一个较为详细的spring缓存的介绍 http:/ ... -
spring各种接口的作用FactoryBean、ApplicationContextAware、InitializingBean
2015-10-20 20:04 3046FactoryBean 当配置文件中<bean&g ... -
jvm调试命令
2015-10-14 15:42 510jps jps -mlv 列出当前jvm进程 ji ... -
CAS自定义线程安全的计数器
2015-10-10 17:36 2232写了一个线程安全的计数器(用锁显得多没有水平),非阻塞的,通过 ... -
JUC--Parser
2015-09-08 16:27 717Java 7的并发包中推出了Phaser,其功能跟Cyclic ... -
JUC--Exchanger
2015-09-07 17:26 901Exchanger 用于线程之间数据交换,通过exchange ... -
java浮点型float遇到的一点问题
2015-04-10 16:32 690float 可以除以0,还可以不是一个数字 即Float.is ... -
java静态块的一个小坑
2015-04-07 18:26 670public class Student { pr ... -
java学习计划
2015-04-07 17:57 451刚入职的时候,team大神给制定的学习计划。 受益匪浅啊 ... -
购物网站(spring+mybatis+velocity+maven)项目
2015-04-03 18:06 1034原文地址: http://www.iteye.com/top ... -
synchronized与static synchronized 的区别
2015-03-25 18:51 726基本上每个面试都问到了,面试命中率很大。 public cl ...
相关推荐
Java多线程是Java编程语言中一个非常重要的概念,它允许开发者在一个程序中创建多个执行线程并行运行,以提高程序的执行效率和响应速度。在Java中,线程的生命周期包含五个基本状态,分别是新建状态(New)、就绪...
在Java中,线程可以分为用户线程和守护线程,前者是程序运行的基础,而后者是在所有用户线程结束时才终止的后台服务。 一、线程的创建方式 Java提供了多种创建线程的方式: 1. 继承Thread类:创建一个新的类,继承...
总结来说,Java线程基础知识涵盖的内容丰富,从线程的基本概念,到线程在程序中的应用,再到线程间的通信和同步机制,都是多线程编程中不可或缺的一部分。掌握这些知识对于开发高性能、多任务并行处理的应用程序具有...
- 同步机制:为了防止多个线程访问同一资源时产生数据不一致的问题,Java提供了`synchronized`关键字,可以锁定代码块或整个方法,确保同一时刻只有一个线程执行。 - 等待/通知机制:`wait()`, `notify()`, `...
Java多线程是Java编程中的一个重要概念,它允许程序同时执行多个任务,提高了程序的效率和响应速度。在Java中,实现多线程有两种主要方式:继承Thread类和实现Runnable接口。 1. 继承Thread类: 当我们创建一个新...
Java线程是Java编程中的重要概念,特别是在多核处理器和并发处理中不可或缺。Java线程允许程序在同一时间执行多个不同的任务,从而提高了程序的效率和响应性。在燕山大学信息学院计算机系的课程中,李峰教授讲解了...
`volatile`关键字用于标记一个变量是共享的,所有线程都可以直接读取该变量的最新值,而不需要从主内存中加载。 ```java public class Singleton { private static volatile Singleton instance; public static ...
本案例将深入探讨Java多线程中的关键知识点,包括线程同步、线程通信和线程阻塞。 线程同步是为了防止多个线程同时访问共享资源,导致数据不一致。Java提供了多种同步机制,如synchronized关键字、Lock接口...
通过深入学习和实践这些Java线程基础知识,你可以有效地编写出高效、安全的多线程程序。记住,理解线程的原理和掌握同步机制是关键,这将有助于解决复杂的并发问题。阅读"Java线程.pdf"文档,你将获得更详细、全面的...
总之,Java线程是并发编程的基础,理解和掌握线程的生命周期、实现方式和同步机制对于编写高效、安全的多线程程序至关重要。在实际应用中,根据需求选择合适的线程实现策略,并结合同步机制,可以有效地利用系统资源...
每个Java程序都有一个主线程,即由JVM启动并执行main方法的线程。线程代表了程序中的执行流,可以在不同的线程之间切换以共享CPU时间。线程的状态包括新建、运行、中断和死亡。线程的生命周期始于新建,通过调用...
《Java线程(第三版)》是一本深入探讨Java线程技术的专业书籍,旨在帮助开发者理解和掌握Java平台上的多线程编程。Java线程是并发编程的重要组成部分,它允许程序同时执行多个任务,从而充分利用系统资源,提高程序的...
本文将深入解析Java线程的相关知识点,包括线程的定义、创建、状态管理、线程同步和安全问题。 1. **线程定义** 在Java中,线程是进程中的单一顺序控制流,是程序执行的基本单元。线程在进程的上下文中运行,共享...
在“JAVA编写的多线程小弹球测试”项目中,开发者利用Java语言创建了一个生动有趣的多线程应用,即一个模拟小弹球运动的程序。这个程序的特点是弹球会随机出现、随机选择颜色,并且在碰到边界时能自动反弹,充分展示...
每个线程都有一个优先级,范围从1(MIN_PRIORITY)到10(MAX_PRIORITY),默认值是5(NORM_PRIORITY)。然而,优先级高的线程并不一定先执行,这取决于操作系统的线程调度策略。 线程池是Java中处理大量并发线程的...
Java线程是Java编程语言中的一个核心概念,它允许程序同时执行多个任务,极大地提高了程序的并发性和效率。本教程将深入探讨Java线程的使用,帮助开发者掌握这一关键技术。 一、线程基础 1. **线程的概念**:线程...
Java多线程基础知识是Java编程语言中的一项重要技术,用于提高程序的执行效率和响应速度。在这里,我们将详细介绍Java多线程基础知识的相关概念和技术。 一、程序、进程和线程 程序(Program)是一段静态的代码,...
然而,对于复杂的后台任务,推荐使用`Handler`、`Looper`和`HandlerThread`,它们可以创建一个后台线程,处理耗时操作,并通过消息机制将结果发送回主线程进行UI更新。 网络通信在Android中通常使用`...
### Java线程入门知识点详解 #### 一、Java线程基础知识概述 **1.1 什么是线程?** 线程是程序执行流的最小单元,是操作系统...以上介绍的是Java线程的基础知识,更多高级特性和最佳实践将在后续的学习中逐渐深入。