A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© heimafeng 中级黑马   /  2015-8-17 23:07  /  380 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一.JDK5的Lock锁:
Lock o = .....;
o.lock();
try{
}finally{
  o.unlock();
}
二.死锁问题:
1.基于同步锁,当锁定某对象时,其它对象会对此对象进行访问,在不释放锁的情况下,其它线程会一直等待;
          如果双方线程都在如此等待时,这就是:死锁;
2.死锁问题的解决:见:"什么是死锁及死锁的必要条件和解决方法.doc"
三.生产消费者问题:
1.一方生产,一方消费:此例只适用于"单生产"和"单消费"的情况;
2.解决:
  在共享资源内部,当资源没有准备好时,可以让当前访问的线程等待:Object-->wait();
  在准备好资源后,可以唤醒等待的线程:notify():唤醒一个线程;
         notifyAll():唤醒所有等待的线程;
四.线程组:
1.线程都有线程组,默认线程组:main;
2.设定线程组:
  1).实例化我们的线程类;
  2).实例化线程组;
  3).实例化一个Thread,传递参数:线程组对象、线程对象、线程名称
  MyThread myT1 = new MyThread();
  ThreadGroup group = new ThreadGroup("我的线程组");
  Thread t = new Thread(group,myT1,"线程1");
3.线程组的意义:
  可以对多个线程进行统一管理,可以统一执行操作;例如:一次性停止线程组内的所有线程;

五.线程池:
1.JDK5之后;
2.实现方式:
  1).获取线程池:
   ExecutorService service = Executors.newFixedThreadPool(2);
   //调用service的submit()方法
   MyThread t1 = new MyThread();
   Future<?> result = service.submit(t1);
   //获取返回值:
   Object value = result.get();
  2).可以反复的运行线程池中的线程对象
   service.submit(t1);
  

六.JDK5的线程实现方式:
1.实现Callable接口
2.重写call()方法;
3.启动:
  使用线程池的方式;
特点:JDK5的线程方式可以获取返回值,并且call方法可以抛出异常;
七.定时器
1.TimerTask(抽象类):定义任务:
  1).自定义类,继承自TimerTask;
  2).重写run()方法;
2.Timer(类):启动定时器,执行任务;
  1).实例化一个Timer();
  2).public void schedule(TimerTask task, long delay):在指定的时间执行指定的任务。只执行一次。
     public void schedule(TimerTask task,long delay,long period):在指定的时间,执行任务,并每隔period时间,反复的执行;
八.设计模式:
1.简单工厂模式:
2.工厂方法模式:
3.单例模式:
  1).饿汉式
  2).懒汉式

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马