那只鱼吧 关注:5贴子:706
  • 10回复贴,共1
好好学Java,在我所熟知的行业里,我觉得搞开发是最能赚钱的,俗一点,为了钱,好好努力


1楼2013-12-08 00:38回复
    /*
    * 多线程售票
    * */
    package azhu;
    //票类
    class Ticket implements Runnable{
    private int num=100;//此处用static的话,有多种票时就出乱子了
    Object obj=new Object();
    public void run(){
    sale();
    }
    public void sale(){
    while(true){
    synchronized(obj){//同步代码块
    if(num>0){
    try{
    Thread.sleep(10);//测试线程安全问题让其睡一会,结果会出现num=0、1、-1的情形
    }
    catch(InterruptedException e){
    //处理代码
    }
    System.out.println(Thread.currentThread().getName()+"..sale.."+num--);
    }
    }
    }
    }
    }
    public class ThreadSaleTicket {
    public static void main(String[] args) {
    Ticket ti=new Ticket();
    Thread t1=new Thread(ti);//建立三个售票窗口
    Thread t2=new Thread(ti);
    Thread t3=new Thread(ti);
    t1.start();
    t2.start();
    t3.start();
    }
    }


    2楼2013-12-08 00:39
    回复
      2025-05-25 18:12:17
      广告
      20131208


      3楼2013-12-08 22:30
      回复
        /*
        * 单例多线程
        * */
        package azhu;
        //单例手机模式(饿汉式) 多线程时安全,不需要加同步锁
        public class Danlimoshi{
        private static final Danlimoshi d=new Danlimoshi();
        private Danlimoshi(){}
        public static Danlimoshi getInstance(){
        return d;
        }
        }
        //延迟加载单例设计模式(懒汉式) 多线程时不安全,需要加同步锁
        class Single{
        private static Single s=null;
        private Single(){}
        public static /*synchronized 此处加此关键字后可以解决安全问题,但是程序效率不高*/ Single getInstance(){
        if(s==null){
        synchronized(Single.class){//可以解决同步问题,但如果外面没有if(s==null)则程序效率不高 ps:静态函数的同步锁是 类名.class
        if(s==null)
        s=new Single();
        }
        }
        return s;
        }
        }


        4楼2013-12-08 22:30
        回复
          /*
          * 死锁
          * */
          package azhu;
          //创建锁
          class MyLock{
          public static final Object locka=new Object();//定义两个锁
          public static final Object lockb=new Object();
          }
          //线程任务
          class DeadLockTest implements Runnable{
          private boolean flag;
          DeadLockTest(boolean flag){
          this.flag=flag;
          }
          public void run(){
          if(flag){//如果死锁不了,可以用while(true)将if多执行
          synchronized(MyLock.locka) {
          System.out.println(Thread.currentThread().getName()+"..if locka");
          synchronized(MyLock.lockb){
          System.out.println(Thread.currentThread().getName()+"...if lockb");
          }
          }
          }
          else{
          synchronized (MyLock.lockb) {
          System.out.println(Thread.currentThread().getName()+"...else lockb");
          synchronized(MyLock.locka){
          System.out.println(Thread.currentThread().getName()+"...else locka");
          }
          }
          }
          }
          }
          public class DeadLock {
          public static void main(String[] args) {
          DeadLockTest d1=new DeadLockTest(true);
          DeadLockTest d2=new DeadLockTest(false);
          Thread t1=new Thread(d1);
          Thread t2=new Thread(d2);//由于flag是boolean类型的,只有true和false两个值,所以此处可以的,d1、d2不一样
          t1.start();
          t2.start();
          }
          }


          5楼2013-12-08 22:32
          回复
            今天没有学习java,只面试了个蛋疼的面试


            6楼2013-12-09 22:48
            回复
              Day01
              1.临时环境变量配置 dos命令行配置,只在当前dos窗口有效
              2、 int=2,char=’2’
              3. 左移<<:乘以2的几次方,3<<3=3*23
              右移>>:除以2的几次方
              >>:右移时,最高位补原来的最高位
              >>>>:右移时,最高位直接用0补


              7楼2014-11-04 22:15
              回复
                Day02
                1 栈内存变量用完释放内存,堆内存不会
                new出来的实体(数组和对象 )都在堆里面
                2 Arrays.sort(arr)自带的排序
                作业:选择冒泡排序,折半查找


                8楼2014-11-05 22:13
                回复
                  2025-05-25 18:06:17
                  广告
                  Day3
                  1,构造代码块优先于构造函数运行
                  2 this在构造函数之间进行相互调用
                  class Person
                  {
                  int name;
                  int age;
                  Person(name)
                  {
                  this.name=name;
                  }
                  Person(name,age)
                  {
                  this(name);//只能放在构造函数的第一行
                  this.age=age;
                  }
                  }


                  9楼2014-11-06 22:48
                  回复
                    day4
                    1,static
                    随着类的加载而加载
                    2.静态代码块:
                    随着类的加载而执行
                    3.静态代码块给类初始化,构造代码块给对象初始化,构造函数给对应对象初始化。(执行顺序)


                    10楼2014-11-11 00:18
                    回复
                      祝自己节日快乐


                      11楼2014-11-11 00:19
                      回复