您的位置:首页 > 职场人生

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

2013-12-15 22:15 190 查看
----------------------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培训、期待与您交流!
----------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: