黑马程序员----------------io流复制文件

----------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

什么叫做进程?什么叫做线程?
答:我总结他就采取了两招“举例+画图”进程就是在内存在开辟了一块空间,放一个程序进去,线程就是这个程序中的一个任务,多线程就是一个程序中多个任务同时进行,然后又举例,打开一个360,点击系统优化,然后再点击电脑体检。清晰明了的说明白了!
实现多线程有几种方法?
两种:1、继承Thread类 
        1.重写父类的run方法,
        2.把任务代码写在里面,
        3.调用线程对象的start方法开启线程。
      2、实现 Runable接口
         1.覆盖接口中的run方法,将线程的代码封装到run方法中
         2.通过Thread类创建线程对象,并将Runnable接口的子类对象作为Thread类的构造函数的参数传递。
          为什么?因为线程的任务都封装在Runnable接口的子类对象的run方法中,所以要在线程对象创建时就必须明确要运行的任务。
         3.调用线程对象的start方法开启线程。
         4.实现Runnable接口的好处:
           1、将线程的任务从线程的子类中分离出来,进行了单独的封装。按照面向对象的思想将任务的封装成对象
           2.也是说有的接口的好处,避免了java单继承的局限性。
 
线程安全问题产生的原因:
 1.对多个线程操作共享的数据
 2.操作共享数据的线程代码有多条
 
当一个线程在执行操作共享数据的多条代码过程中,其他线程参与了运算就会导致线程安全问题的产生。     
  
   同步的好处:
     解决线程安全的方法:就是同步代码块synchronized(对象){}
   
   同步的弊端:相对以前降低了执行效率  
   
   同步的前提:必须所有的对象使用一个锁
  
  同步函数使用的锁是this;
  同步函数和同步代码块的区别:
        1、同步代码块的锁是任意的对象。
        2、建议使用同步代码块
   静态的同步函数使用的锁是 该函数所属的字节码文件对象 可以用getClass 方法获取,也可以用当前  类名.class 表示      
   
   单列模式:
   /*
   饿汉模式
   */
   
   class Single{
   private static Single s = new Single();
         private Single(){}
private static Single getInstance(){
     
                      return s;  
}
   }
   /*
   懒汉模式
   */
   class Single{
   private static Single s = null;
      private Single(){}
    private static Single getInstance(){
     
        if(s==null){
   s = new Single();
}
     return s;
}
   }
   
  /*
  单例模式涉及的多线程的问题 修改上面的懒汉模式 更安全 性能又高
  */
  class Single{
   private static Single s = null;
      private Single(){}
    private static Single getInstance(){
   if(s==null)
 Synchronized(Single.class){
if(s==null){
s = new Single();
}
}  
     return s;
}
   }

----------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值