- 浏览: 797733 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (151)
- Java-Basic (25)
- Java-NIO (3)
- Java-Mybatis (4)
- Java-Web (15)
- DB-oracle (18)
- DB-mysql (29)
- DB-sqlserver (4)
- DB-postgresql (2)
- DB-SQLite (1)
- DB-H2 (6)
- Tool-Flex (1)
- Tool-Ftp (3)
- Tool-Maven (5)
- Netlink (2)
- Web-CSS (3)
- Web-UI (1)
- Web-JavaScript (8)
- NoSQL (3)
- Mina (2)
- TCPUDP (2)
- SEO (2)
- Network (6)
- DataStructure (1)
- Website-test (1)
- Tool-Excel (1)
- Java-Concurrent (2)
- 前辈指点 (0)
- Eclipse plugins (1)
- DB-NoSQL (1)
最新评论
-
18322696278:
My97DatePicker控件显示时分秒 -
dllhenu:
你好,我让ol加载tiptip,但是tiptip没有在点所在的 ...
OpenLayers下使用Jquery tooltip(Qtip)让要素信息自动显示或隐藏 -
boonya:
你所说的是网页上选择文件路径吧,用ServletFileUpl ...
Apache提供的FTP文件上传下载 -
淡然若水:
我也是用这种方法啊。。。但是FileInputStream i ...
Apache提供的FTP文件上传下载 -
liuweihug:
json序列化反序列化插件-json2.js 介绍和使用 - ...
Json 数据反序列化为Java对象
1、线程不同步
在同一个进程中的线程都是独立运行的,线程之间会抢占cup,
执行先后顺序是不确定的,谁先得到谁就先执行
2、synchronized 线程同步
在同一个进程中的线程都是独立运行的,线程之间会抢占cup,
执行先后顺序是不确定的,谁先得到谁就先执行
package com.boonya.multithread.explain; /**================================== * 文件:WhyThreadNotSynchronized.java * 描述:多线程不同步的原因 * ================================== */ // 共享一个静态数据对象 public class WhyThreadNotSynchronized { public static void main(String[] args) { MyTaskThread mythread1=new MyTaskThread("Thread1"); MyTaskThread mythread2=new MyTaskThread("Thread2"); mythread1.start(); mythread2.start(); } } class MyTaskThread extends Thread{ public MyTaskThread(){} public MyTaskThread(String threadName){ super(threadName); } @Override public void run() { // 为了更清楚地看到不正确的结果,这里放一个大的循环 for (int i = 0; i < 50; i++){ if (this.getName().equals("Thread1")){ Data.myData = "这是第 1 个线程"; // 为了演示产生的问题,这里设置一次睡眠 try{ Thread.sleep((int)Math.random() * 100); } catch(InterruptedException e){ } // 输出结果 System.out.println(this.getName() + ":" + Data.myData); }else if (this.getName().equals("Thread2")){ Data.myData = "这是第 2个线程"; // 为了演示产生的问题,这里设置一次睡眠 try{ Thread.sleep((int)Math.random() * 100); } catch(InterruptedException e){ } // 输出结果 System.out.println(this.getName() + ":" + Data.myData); } } } }
2、synchronized 线程同步
package com.boonya.multithread.explain; import com.boonya.base.Data; /**============================== * 文件:SynchronizedThread.java * 描述:多线程不同步的解决方法--锁 * ============================== */ public class SynchronizedThread { public static void main(String[] args) { MyTaskThread2 mythread1=new MyTaskThread2("Thread1"); MyTaskThread2 mythread2=new MyTaskThread2("Thread2"); mythread1.start(); mythread2.start(); } } class MyTaskThread2 extends Thread{ public MyTaskThread2(){} public MyTaskThread2(String threadName){ super(threadName); } @Override public void run() { // 为了更清楚地看到不正确的结果,这里放一个大的循环 for (int i = 0; i < 50; i++){ if (this.getName().equals("Thread1")){ // 锁定共享对象 synchronized (Data.myData){ Data.myData=" is thread1 "+i; // 为了演示产生的问题,这里设置一次睡眠 try{ Thread.sleep((int)Math.random() * 100); } catch(InterruptedException e){ } // 输出结果 System.out.println(this.getName() + ":----------thread 1 excuted" ); } }else if (this.getName().equals("Thread2")){ // 锁定共享对象 synchronized (Data.myData){ Data.myData=" is thread2 "+i; // 为了演示产生的问题,这里设置一次睡眠 try{ Thread.sleep((int)Math.random() * 100); } catch(InterruptedException e){ } // 输出结果 System.out.println(this.getName() + ":----------thread 2 excuted"); } } } } }
发表评论
-
cache4jJava对象缓存使用示例
2013-10-28 18:16 01、下载cache4j http://source ... -
Java DES加密工具
2013-10-16 11:19 25131、DES算法的原理 DES 使用一个 56 位的密钥以及附加 ... -
Json 数据反序列化为Java对象
2013-08-29 00:12 11592前言:我们在项目中经常用到的是Json格式的数据,如果是将一个 ... -
BeanUtils实现对Java对象的拷贝
2013-08-06 17:26 9090场景描述:两个对象字段一样,怎么简便地赋值呢?假设有两个实体类 ... -
Jackson时间格式及属性忽略
2013-05-17 13:16 15211、Date时间格式 当使用jackson在处理时间时,默认是 ... -
两种将Java对象转成JSON格式的方式
2013-05-16 13:14 2784前言:Java中数据传递到前端的时候很多情况都是JSON格式数 ... -
怎样比较两个集合是否相等
2013-05-16 10:49 6961受这篇文章启发:http://rijin.iteye.com/ ... -
Java字符串时间转Date工具
2013-04-27 00:13 1879注意:java.util.Date是无时区概念的,不用考虑时区 ... -
Java中变量的线程安全问题
2013-04-22 13:38 1833静态变量:线程非安全 ... -
项目中加入声音文件
2013-03-14 18:22 0Java web how to play audio? --- ... -
Timer、TimerTask实现定时业务处理
2013-03-14 20:26 15241、编写任务 package com.bo ... -
resteasy
2013-03-13 18:36 01、访问方式 PUT POST GET 2、下载资源ja ... -
Java中使用C3P0连接池
2013-03-13 00:25 221831、c3p0.properties c3p0.driverCl ... -
Jsoup解析URL或网页内容开发指南
2013-03-04 10:51 2479参考开发示例文档:http://www.open-open.c ... -
Java中线程池使用
2013-02-27 23:31 998摘自infoQ:http://www.infoq.com/cn ... -
Java中线程池使用
2013-02-27 23:27 21、合理使用线程池的好 ... -
Java中volatile实现线程间变量共享
2013-02-27 23:03 2409volatile变量自身具有下列特性: 可见性。对一个vol ... -
Java中Synchronized的使用注意事项
2013-02-26 14:21 1246转自:http://www.blogjava.net/free ... -
Java实现mysql存储过程调用
2013-02-19 21:41 1297------------------------------- ... -
Java多线程编程#线程等待机制
2013-02-16 15:37 11011、最佳的模型是:生产者-消费者 package com.b ...
相关推荐
Java多线程编程是Java开发中的...以上内容只是《Java多线程编程核心技术》教程中的一部分核心知识点,实际学习中还需要结合具体示例和实践来深入理解和掌握。通过学习,开发者可以编写出高效、稳定的多线程Java程序。
从给定的文件信息中,我们可以提取出关于Java多线程编程的重要知识点,涉及线程创建、线程生命周期以及线程间的同步与通信等核心概念。 ### Java多线程编程实例解析 #### 1. 创建线程的方式 在Java中,创建线程有...
《Java多线程编程实例》这本书深入浅出地探讨了Java中的多线程编程,通过丰富的实例帮助读者理解和掌握这一复杂主题。随书源码提供了实际操作的机会,以便读者能够亲手实践书中的示例,加深理解。 1. **线程创建...
Java多线程是Java编程中的重要概念,尤其在开发高性能、高并发的应用中不可或缺。本示例旨在为初学者提供一个全面理解Java多线程的起点。通过学习这个实例,你可以掌握如何创建和管理线程,理解线程同步与通信的重要...
### Java多线程编程详解与实战案例 #### 理解多线程概念与Java内存模型 多线程,作为现代编程中的一项关键技术,允许在单一应用程序中并发执行多个指令流,每个这样的指令流被称为一个线程。在Java中,线程被视为...
Java多线程是Java编程中的重要概念,尤其在如今的多核处理器环境下,理解并熟练掌握多线程技术对于提高程序性能和响应速度至关重要。本资料详细讲解了Java多线程的原理,并提供了丰富的实战代码,非常适合Java初学者...
### Java多线程编程详解:深入理解与实践 #### 一、理解多线程机制 多线程,作为现代编程语言的重要特性之一,允许在单一应用程序内并发执行多个任务,从而极大提升了程序的效率和响应速度。在Java中,多线程的...
### Java多线程编程知识点详解 #### 一、Java多线程基础知识 ##### 1.1 什么是线程? 线程是程序中的最小执行单元,是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。在Java中...
在Java编程语言中,多线程是核心特性之一,它允许程序同时执行多个任务,从而提高了应用程序的效率和响应...文档“java多线程实例.docx”可能包含具体的示例代码和详细解释,建议参考学习,以加深对Java多线程的理解。
《Java多线程编程实战指南(设计模式篇)》由黄文海撰写,是一本深入探讨Java多线程编程和设计模式的专业书籍。书中详细介绍了如何在Java环境中利用多线程来实现高效的并发处理,同时结合设计模式,帮助开发者更好地...
Java多线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,提升系统效率。在本实例源码中,包含17个章节和上百个实例,旨在深入讲解Java多线程的核心概念和实际应用。 一、线程基础知识 在Java中,...
### JAVA编程高级-多线程编程 #### 一、多线程简介 多线程编程是一种软件技术,它允许在单个程序内并发执行多个控制流。这种技术极大地提高了程序的执行效率和响应能力,特别是在现代多核处理器环境中。本文档主要...
总而言之,这本书全面覆盖了Java多线程编程的各个方面,不仅介绍了基础理论,还提供了实际操作示例,对于想要提升Java并发编程能力的开发者来说,是一份宝贵的资源。通过深入学习和实践,开发者不仅可以提升个人技能...
Java多线程编程是提升程序性能和响应性的关键技术。理解多线程的概念,掌握线程的创建、同步、通信、死锁避免等核心知识点,以及合理使用线程池,对于编写高效、稳定的并发程序至关重要。通过实践,开发者可以更好地...
在Java编程中,线程同步和互斥是多线程编程中的重要概念,它们用于解决多个线程同时访问共享资源时可能出现的问题。本项目通过一个生产者消费者问题的实例,展示了如何在Java中实现线程间的同步与互斥。 生产者消费...
本文将通过一个简单的 Java 多线程编程示例,向读者介绍多线程的基本概念和使用方法。 线程的创建 要实现多线程编程,首先需要创建一个继承自 Thread 类的子类或实现 Runnable 接口的类。这两种方式都可以在 Java ...
内容概要:本文详细介绍了 Java多线程编程的基础知识和高级技术。内容涵盖线程的概念与重要性、创建线程的方式、线程的生命周期与基本控制方法、线程同步与死锁、线程间通信、线程池与 Executor框架、并发集合与原子...
Java多线程编程还涉及到线程同步、线程通信、线程状态管理等多个复杂主题,如synchronized关键字、wait()和notify()方法、Thread.join()、Thread.sleep()、线程池等。理解并熟练掌握这些知识点对于编写高效、稳定的...
### JAVA多线程案例教学详析 #### 一、引言 随着计算机技术的发展,多核处理器已经成为...通过上述介绍的学习资料,新入行的开发者可以快速掌握Java多线程编程的核心概念和技术实践,为进一步深入研究打下坚实的基础。
标题《Java多线程编程深入详解》所涉及的知识点涵盖了Java多线程编程的核心思想、原理以及在实际开发中可能遇到的问题和解决方案。以下是对这些知识点的详细阐述: 1. 多进程与多线程概念的区分和理解 - 进程是...