Java多线程同步简单了解

来源:互联网 发布:java做网络爬虫 编辑:程序博客网 时间:2024/06/05 16:15

控制某个方法允许并发访问线程的个数:

Semaphore semaphore = new Semaphore(5,true);//最多5个线程访问
写在被线程调用的方法中

> semaphore.require()-->申请一个线程的请求>semaphore.release()-->释放一个线程的请求

多个线程共享一个变量的值不发生冲突的实现

(利用Semaphore来请求是否允许执行通过阻塞线程实现)

Semaphore 的构造参数是当前同时访问含有

semaphore.require()–>申请一个执行当前线程,如果当前执行的线程数量没有超过构造参数设置的数量,就能执行当前线程
semaphore.release()—>当前线程执行完后释放permit>允许执行数量
两个方法的方法 的线程数量

  public static void main(String[] args) {                Thread threadA = new Thread(){public void run() {                     try {                           semaphore.acquire();                           count=10;                     } catch (InterruptedException e) {                           e.printStackTrace();                     }                     semaphore.release();                }};                Thread threadB = new Thread(){public void run() {                     try {                           semaphore.acquire();                     } catch (InterruptedException e) {                           e.printStackTrace();                     }                     System.out.println("线程B数据为:"+count);                     semaphore.release();                }};                Thread threadC = new Thread(){public void run() {                     try {                           semaphore.acquire();                     } catch (InterruptedException e) {                           e.printStackTrace();                     }                     semaphore.release();                     System.out.println("线程C数据为:"+count);                }};                threadA.start();                threadB.start();                threadC.start();     }
1 0
原创粉丝点击