java多线程
月轩居士
Archimedes said: give me a fulcrum,I will move the earth.Program ape said: give me a keyboard,I can change the world.
展开
-
java 多线程(三)条件对象
首先,我们来介绍一下临界区。 临界区:在同步的程序设计中,临界区指的是一个访问共用资源的程序片段,而这些共用资源又具有无法同时被多个线程访问的特性。 当有线程进入临界区时,其他线程或是进程必须等待,在一些情况下必须在临界区的进入点与离开点采用一些特殊的方法,以确保这些共用资源是被互斥使用的。 现在我们来看一个新的例子,这是一个银行转账的例子。在Bank类中,我们声明了一个10个大小的数转载 2015-08-27 20:35:17 · 632 阅读 · 0 评论 -
JAVA-socket通信基础(2)
由于现实情况远远复杂过理想情况,单线程的C/S结构不能满足实际的需求,使用多线程配合socket进行C/S服务的模拟。典型的方法是服务器端为每一个客户连接运行一个后台线程,这个后台线程是一个socket负责处理服务器和客户端之间的通信。 以下是服务器端程序代码: [java] view plaincopy package Server2;转载 2015-12-12 09:40:59 · 426 阅读 · 0 评论 -
Java线程
Java线程:概念与原理 一、操作系统中线程和进程的概念 现在的操作系统是多任务操作系统。多线程是实现多任务的一种方式。 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。比如在Windows系统中,一个运行的exe就是一个进程。 线程是指进程中的一个执行流程,一个进程中可以运行多个线程。比如java.exe转载 2015-08-28 09:59:10 · 507 阅读 · 0 评论 -
java多线程(七)提高锁的效率——使用读写锁
之前我们讲过ReentrantLock,这种锁不区分读操作和写操作,如果有一个线程在执行读操作,那么其他的所有的线程不能进行任何的读操作或者写操作。这样可以保证程序的互斥性,但是降低了程序的并发性,使执行效率降低,没有有效的发挥多线程的优势。比如说,有一个系统,主要是以读操作为主,比如有10个线程负责读数据,只有一个线程负责写数据。如果用我们之前的ReentrantLock方法,这10个线程中没有转载 2015-08-28 09:02:37 · 846 阅读 · 0 评论 -
java中getClass( )和class()的联系和区别
java有两个获得类名的方法getClass()和class(),这两个方法看似一样,实则不然。这两个方法涉及到了java中的反射。 反射 所谓反射,可以理解为在运行时期获取对象类型信息的操作。传统的编程方法要求程序员在编译阶段决定使用的类型,但是在反射的帮助下,编程人员可以动态获取这些信息,从而编写更加具有可移植性的代码。严格地说,反射并非编程语言的特性,因为在任何一种语言都可以实现转载 2015-08-28 09:01:18 · 615 阅读 · 0 评论 -
java多线程(五)synchronized关键字修饰代码块
先来为大家介绍一下java中锁的概念。java中的每个对象和每个类都有锁,而且是互斥锁,也就是说只能有一方占有,另一方只能等到对方释放后才能再占有锁。synchronized关键字就是基于java的对象和类的锁的。 一、修饰普通方法 下面来看一下下面这个例子,Trans这个类是在一行中打印当前的线程和0-24这25个数。MyThread这个类接收一个Trans类的对象,转载 2015-08-28 09:11:04 · 597 阅读 · 0 评论 -
java多线程(四)synchronized关键字修饰方法
先来为大家介绍一下java中锁的概念。java中的每个对象和每个类都有锁,而且是互斥锁,也就是说只能有一方占有,另一方只能等到对方释放后才能再占有锁。synchronized关键字就是基于java的对象和类的锁的。 一、修饰普通方法 下面来看一下下面这个例子,Trans这个类是在一行中打印当前的线程和0-24这25个数。MyThread这个类接收一个Trans类的对象,转载 2015-08-28 09:10:20 · 692 阅读 · 0 评论 -
java多线程(六)深入理解volitale关键字
一、java内存模型与多线程编程中的三个感念 1、原子性 原子性是指一些操作或者全都执行,要么或者全都不执行,整个操作作为一个整体是不可分割的,例如,一个银行中有两个账户A,B,现在要从A账户中转账500元到B账户,那么一共可以分为两个步骤: 1、从A账户取出500元:A = A - 500; 2、向B账户存入500元:B = B + 500; 这两个步骤作为一个整体,要么转载 2015-08-28 09:03:21 · 564 阅读 · 0 评论 -
java多线程(八)为什么弃用stop和suspend
初始的java版本中定义了一个stop方法来终止一个线程还定义了一个suspend方法来阻塞一个线程,直到另一个线程调用resume方法。这两个方法在Java SE 1.2之后就被弃用了,因为这两种方法都不安全,下面我们分别来讨论一下为什么不安全和应该怎样做才是安全的。 一、stop方法为什么不安全 其实stop方法天生就不安全,因为它在终止一个线程时会强制中断转载 2015-08-28 09:01:43 · 511 阅读 · 0 评论 -
java多线程(二)锁对象
锁对象 java SE5.0之后为实现多线程的互斥引入了ReentrantLock类。ReentrantLock类一个可重入的互斥锁 Lock,它具有与使用 synchronized 方法和语句所访问的隐式监视器锁相同的一些基本行为和语义,但功能更强大。 ReentrantLock类有两种构造方法: 构造方法 一、不带公平参数的构造方法 priva转载 2015-08-27 20:33:23 · 504 阅读 · 0 评论 -
java多线程(一)Race Condition现象及产生的原因
什么是Race Condition 首先,什么是Race Condition呢,Race Condition中文翻译是竞争条件,是指多个进程或者线程并发访问和操作同一数据且执行结果与访问发生的特定顺序有关的现象。换句话说,就是线程或进程之间访问数据的先后顺序决定了数据修改的结果,这种现象在多线程编程中是经常见到的。 Race Condition 实例 clas转载 2015-08-27 20:31:54 · 1547 阅读 · 0 评论 -
JAVA-socket通信基础(1)
使用ServerSocket和Socke对象t建立简单的套接字(Socket)通信。 1.在C/S通信模式中, Server端需要创建监听端口的 ServerSocket,负责接收客户连接请求。 以下是通信的服务器端程序: [java] view plaincopy package Server1; import j转载 2015-12-12 09:38:18 · 424 阅读 · 0 评论