- 浏览: 234510 次
- 性别:
- 来自: 上海
最新评论
-
cherami:
解法3有问题,在n很大的时候会导致baseNum溢出使得结果不 ...
阶乘算法之一N! 末尾有多少个零 -
yubenjie:
我怎么没看出多线程啊,就单线程再跑嘛
多线程编程之理财 -
fei229670104:
多线程 不错
多线程编程之理财 -
fei229670104:
liujiafei_2007 写道你好,问个问题,取钱时不用判 ...
多线程编程之存钱与取钱 -
liujiafei_2007:
你好,问个问题,取钱时不用判断取出的金额是否大于账户的余额吗? ...
多线程编程之存钱与取钱
文章列表
maven一般使用是通过pom中在dependency来引用maven资源库中的jar包或私服中的jar包,但有些第三方服务的jar如果放在工程里怎么引用呢?
同样是使用dependency来引本地工程根目录下lib目录下的jar包
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
<version>1.0.0</version>
< ...
在项目开发中,简易的安全机制可以采用token验证的方式,如下token工具类:
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang.RandomStringUtils;
import com.sfbm.carmall.constant.Constant;
import com.sfbm.core.util.string.StringUtils;
public class Tok ...
一:关于 Callable<V>的源码
package java.util.concurrent;
public interface Callable<V> {
/**
* Computes a result, or throws an exception if unable to do so.
*
* @return computed result
* @throws Exception if unable to compute a result
*/
V call() ...
Excutor框架结构图:
上一篇讲了Executor接口,本篇来讲一下ExecutorService接口,从图中可以看出ExecutorService扩展了Executor接口,一般扩展后,都会新增一些功能方法,它有哪些新方法呢?
一:关于ExecutorService的源码
package java.util.concurrent;
import java.util.List;
import java.util.Collection;
import java.security.PrivilegedActi
讲到并发就不得不讲一下Executor框架,其框架主要类关系图如下:
从图中可以看出来,接口Executor是框架知识点的引路者,那就从它讲起!
一:关于Executor的源码
/*
* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
* Written by Doug Lea with assistance from members of JCP JSR-166
* Expert Group and released to the public domain, as ...
我们一再提线程、锁等概念,但锁是如果实现的呢?又是如何知道当前阻塞线程的又是哪个对象呢?
从java.util.concurrent.locks.LockSupport这个类先说起,因为这个类实现了底层的一些方法,各种的锁实现都是这个基础上发展而来的。这个类方法很少,但理解起来需要花费一点时间,因为涉及了很多底层的知识,这些都是我们平时不关心的。
一:查看JDK源码
package java.util.concurrent.locks;
import java.util.concurrent.*;
import sun.misc.Unsafe;
/* ...
//设置本窗体的相关属性
this.setTitle("用户登录");
Toolkit tk = Toolkit.getDefaultToolkit();
//this.setIconImage(logo); //设置窗体显示的图标
this.setVisible(true); //设置窗体为可见
this.setSize(422, 492);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.setResizable(false); //设置窗体大小不可改变
...
上一篇文章里讲了java.util.concurrent.locks 包下的Lock,以及简单使用的例子,这一篇我们要继续介绍java.util.concurrent.locks包下的类文件,它就是Condition
一:源码解读
package java.util.concurrent.locks;
import java.util.concurrent.*;
import java.util.Date;
/**
* Condition 将 Object 监视器方法(wait、notify 和 notifyAll)分解成截然不同的对象,
* 以便通过 ...
在之前的多线程编程的文章中我们讲到了如何使用关键字synchronized加锁来实现同步访问。本文我们继续来探讨锁这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种锁的方式来实现同步访问,那就是Lock。
既然都可以通过synchronized锁来实现同步访问了,那么为什么Java还提供java.util.concurrent.locks包来实现锁的机制? 即生瑜,何生亮?
这里就不得不罗列一下synchronized的不足之处:使用synchronized关键字会锁住某一段程序,别的程序如果需要调用的话就必须等 ...
现实生活中,我们一边工作,一边消费,正常情况下会把多余的钱存起来,比如存到余额宝,还可以多挣点钱,现在就有这个情况:我每月可以发工资20000万元 (暂定每月的1号),每月消费5000(租房+生活费)元(暂定每月的1号),其中租金是大头占90%,交房租的方式可以选择(一月一交,两月一交、三月一交),理财:1万元存余额宝一天可以赚1元钱,想知道半年后的理财情况,选择哪种交房租的方式更省钱,具体省多少? 问题分析:这个问题属于于生产者—消费者模型,其中生产者—发工资+理财,消费者—交房租+生活费,其中银行账户作为储存容器,只不过这里跟普通的生产者—消费者模型不一样的是生产者和消费者的 ...
现实生活中,有些工作是需要团队中成员依次完成的,这就涉及到了一个顺序问题。现在有T1、T2、T3三个工人,如何保证T2在T1执行完后执行,T3在T2执行完后执行?问题分析:首先问题中有三个实体,T1、T2、T3, 因为是多线程编程,所以都要设计成线程类。关键是怎么保证线程能依次执行完呢?
Java实现过程如下:
public class T1 implements Runnable{
@Override
public void run() {
try {
System.out.println("T1开始工作.....");
...
生活费问题是这样的:学生每月都需要生活费,家长一次预存一段时间的生活费,家长和学生使用统一的一个帐号,在学生每次取帐号中一部分钱,直到帐号中没钱时 通知家长存钱,而家长看到帐户还有钱则不存钱,直到帐户没钱时才存钱。
问题分析:首先问题中有三个实体,学生、家长、银行账户,所以设计程序时就要设计三个类。其中银行账户只有一个,学生和家长操作的是同一个银行账户,学生的行为是随机不定的,即取钱的操作是随机不定的,这里可以把学生设计成一个线程类。家长呢?
Java实现过程如下:
package thread.money;
/**
* 银行账户
* @author zh ...
如大家所知,火车上车厢的卫生间很小,每次只能容纳一个人,一个车厢只有一个卫生间,这个卫生间会被多个人同时使用,在实际使用时,当一个人进入卫生间时则会把卫生间锁上,等出来时打开门,下一个人进去把门锁上,如果有一个人在卫生间内部则别人的人发现门是锁的则只能在外面等待。问题分析:首先问题中有两个实体,一个是人,一个是厕所,所以设计程序时就可以设计两个类。人是多数的,厕所只有一个(暂且模拟的是一个车厢)。人的行为是随机不定的,即随时可能要上厕所。从这里就可以看出设计类时,人要设计成线程类,这样才可以体现其行为随机不定,即可能并发的一起上厕所。
Java实现过程如下:
package ...
还记得上一篇是如何运用Enum来定义一周的的吗?
public enum Weekday {
monday,tuesday,wensday,thursday,friday,saturday,sunday
}
显然,enum很像特殊的class,为了一探究竟,需要来看一下Weekday.java文件的字节码:
通过javap命令,查看字节码得知,实际上enum声明定义的Weekday就是一个类,该类继承(extends )自 java.lang.Enum类。
查看java api文档,其中对
Enum是计算机编程语言中的一种数据类型---枚举类型。在实际问题中,有些变量的取值被限定在一个有限的范围内。
例如,一个星期内只有七天我们通常这样实现上面的定义:
public String monday;
public String tuesday;
public String wensday;
public String thursday;
public String friday;
public String saturday;
public String sunday;
或者你想定义成公用的变量,以为其它类来使用:
public sta ...