zoukankan      html  css  js  c++  java
  • 多线程之同步代码块与同步函数

            

     

    /*需求:买票
    分析:多个窗口卖票 是并发的,是多线程
    利用Runnable接口,传入一个对象,开启多线程

    */
    class Ticket implements Runnable
    {
    private int num=100;
    Object obj=new Object();
    public void run(){
    while(true){
    synchronized(obj)
    {

    if(num>0)
    {


    System.out.println(num--+Thread.currentThread().getName());
    }
    }
    }

    }
    }

    class ThreadDemo
    {
    public static void main(String[] args)
    {
    Ticket d=new Ticket();

    Thread s=new Thread(d);
    Thread s1=new Thread(d);
    s.start();
    s1.start();
    }
    }

    /*
    定义Runnable接口
    * 覆盖接口中的run方法,讲线程的任务代码封装在run方法里
    * 通过Thread类创建线程对象。并将Runnable接口的对象作为Thread类的构造函数的参数进行传递
    * 为什么?因为线程的任务都封装在Runnnable接口自己的对象run方法中
    * 所有要在线程对象创建时就必须明确要运行的任务
    * 调用线程对象的start方法开启线程
    * synchronized(对象){
    需要被同步的代码
    }
    *
    同步的前提:多个线程必须有同一个锁
    public synchronized void add(int num)
    同步函数
    同步函数的锁是固定的this
    同步代码的锁是任意的对象
    建议使用同步代码块
    * */

     *-------------------------------------------*
    By:暮雪超霸博客:http://www.cnblogs.com/chaoba/
     *-------------------------------------------*

    一万年太久,只争朝夕!
  • 相关阅读:
    雷林鹏分享:EJB回调
    雷林鹏分享:EJB注解
    雷林鹏分享:EJB持久性
    雷林鹏分享:EJB有状态会话Bean
    雷林鹏分享:EJB无状态Bean
    雷林鹏分享:EJB创建应用
    雷林鹏分享:EJB概述
    雷林鹏分享:EJB教程
    Java集合框架
    Java集合源码剖析——ArrayList源码剖析
  • 原文地址:https://www.cnblogs.com/chaoba/p/6763149.html
Copyright © 2011-2022 走看看