摘要:第一种:同步代码块 同步代码块的核心是设置同步监视器,原则上在Java中可以设置任何对象为同步监视器,但通常设置可能并发访问的共享资源对象为同步监视器。语法格式如下: synchronized(obj) { …… } 示例代码,模拟多个用户对同一个账户的取钱操作: 1: //当多条线程修改同一共享数据时, 将涉及到线程安全 2: pub...
阅读全文
posted @ 2013-10-15 10:12
|
|||
随笔分类 - Java
Java学习笔记
摘要:第一种:同步代码块 同步代码块的核心是设置同步监视器,原则上在Java中可以设置任何对象为同步监视器,但通常设置可能并发访问的共享资源对象为同步监视器。语法格式如下: synchronized(obj) { …… } 示例代码,模拟多个用户对同一个账户的取钱操作: 1: //当多条线程修改同一共享数据时, 将涉及到线程安全 2: pub...
阅读全文
posted @ 2013-10-15 10:12
摘要:1. join线程: 在线程执行过程中,有时想让另一个线程先执行,比如将一大问题分割成许多小问题,给每一个小问题分配线程,但所有小问题处理完后再让主线程进一步操作。此时我们可以在主线程中调用其它线程的join()方法,以阻塞调用线程(在这里为主线程)。 示例代码: 1: package org.frzh.thread; 2: 3: publi...
阅读全文
posted @ 2013-10-14 09:11
摘要:在Java中,线程有5中不同状态,分别是:新建(New)、就绪(Runable)、运行(Running)、阻塞(Blocked)和死亡(Dead)。它们之间的转换图如下: 上图有一个例外,调用yield()方法可以让当前处于运行状态的线程转入就绪状态。如果要测试某线程是否已经死亡,可以使用isAlive()方法,该方法在线程处于就绪、运行、阻塞时放回true,新建和死亡时返回false。不要...
阅读全文
posted @ 2013-10-14 09:10
摘要:在Java中创建线程的方式有两种,第一种是直接继承Thead类,另一种是实现Runable接口。那么这两种方式孰优孰劣呢? 采用继承Thead类实现多线程: 优势:编写简单,如果需要访问当前线程,只需使用this即可,无需使用Thead.currentThread()方法。 劣势:因为这种线程类已经继承了Thead类,所以不能再继承其它类。 示例代码: 1: pac...
阅读全文
posted @ 2013-10-14 09:06
|
|||