Bank类 public class Bank {private static int money;public int getMoney(){return money;}public void saveMoney(int m){synchronized (this) {System.out.println("存钱后的总金额:"(moneym)); }}public void drawMoney(int m){synchronized…
本文将介绍用来控制资源同时访问个数的Semaphore工具类,然后采用Semaphore给出一个泊车的实例,最后给出Semaphore和CountDownLatch的几点比较。 一. Semaphore工具类介绍 /*** A counting semaphore. Conceptually, a semaphore maintains a set of* pe…
三.使用示例 前面我们讨论了关于线程池的实现原理,这一节我们来看一下它的具体使用:
public class Test {public static void main(String[] args) { ThreadPoolExecutor executor new ThreadPoolExecutor(5, 10, 200, TimeUnit.MILLISECONDS,new Ar…
Runnable接口 a. 该接口只有一个方法:public void run(); b. 实现该接口的类必须覆盖该run方法 c. 实现了Runnable接口的类并不具有任何天生的线程处理能力,这与那些从Thread类继承的类是不同的 d. 为了从一个Runnable对象产生线…
简单模拟实现数据库连接池 实例1: package com.bijian.thread;public class DB {//private static final int MAX_COUNT 10;private static final DB instance new DB();private int count 0;private int maxCount 0;private DB() {}public static DB getInstan…
首先来看一下线程安全问题产生的两个前提条件: 1.数据共享,多个线程访问同样的数据。 2.共享数据是可变的,多个线程对访问的共享数据作出了修改。 实例: 定义一个共享数据: public static int a 0; 多线程对该共享…
1 实现Runnable接口
public class MyThread01 implements Runnable {private int n 10; //定义10个包子Overridepublic void run() {while(n>0){System.out.println(Thread.currentThread().getName()"还有"n"个包子");n--;}}public static void main(…