• gcd多线程


    http://www.cocoachina.com/ios/20140520/8485.html

        //GCD Grand宏大的 Central中央 Dispatch调度
        //是处理多线程的,类似于NSThread,但是比NSThread强大很多
        
        //创建一个串行调度队列(这种方式不推荐使用,一般都是去获取而不是创建)
        //第一个执行完之后才会执行下一个,如果第一个耗时较长,那么下一个需要等待
        //第一个参数:唯一的一个标示符,是c的字符串
        //第二个参数:是对这个队列的描述,直接写NULL
        dispatch_queue_t queue = dispatch_queue_create("com.zhiyou100.gcdtest1", NULL);
        //同步执行,会处于等待状态,可能会卡死主线程
        dispatch_sync(queue, ^{
            //同步执行是在主线程中进行的
    //        NSLog(@"-----%d----", [NSThread isMainThread]);
            
        });
        //异步执行,立即返回,不会对主线程有影响
        dispatch_async(queue, ^{
            //NSLog(@"----2-----");
            //[NSThread sleepForTimeInterval:5];
            //NSLog(@"----3-----");
        });
        
        dispatch_async(queue, ^{
            //[NSThread sleepForTimeInterval:5];
            //串行队列的异步执行是在分线程中执行的
            //NSLog(@"----%d-----", [NSThread isMainThread]);
        });
        dispatch_async(queue, ^{
            //[NSThread sleepForTimeInterval:3];
            //NSLog(@"----2-----");
        });
        dispatch_async(queue, ^{
            //[NSThread sleepForTimeInterval:1];
            //NSLog(@"----3-----");
        });
        
        
        //* 获得一个并行队列
        //第一个参数:优先级,选默认即可
        //第二个参数:标记,写0即可
        dispatch_queue_t queue2 = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
        dispatch_async(queue2, ^{
            //[NSThread sleepForTimeInterval:1];
            //在分线程中完成,如果有大量数据需要下载,可以放在此处
            //NSLog(@"----%d-----", [NSThread isMainThread]);
        });
        dispatch_async(queue2, ^{
            //[NSThread sleepForTimeInterval:2];
            //NSLog(@"----2-----");
        });
        dispatch_async(queue2, ^{
            //[NSThread sleepForTimeInterval:3];
            //NSLog(@"----3-----");
        });
        
        
        //* 获取主线程队列
        dispatch_queue_t queue3 = dispatch_get_main_queue();
        dispatch_async(queue3, ^{
            //主线程中执行,如果有刷新UI的操作,写在此处
            NSLog(@"----%d-----", [NSThread isMainThread]);
        });
        dispatch_async(queue3, ^{             
            NSLog(@"----2-----");
        });
        dispatch_async(queue3, ^{
            NSLog(@"----3-----");
        });
        
        
        //下载并刷新UI
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            
            NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://d.hiphotos.baidu.com/image/w%3D2048/sign=70b811bda41ea8d38a227304a332314e/1ad5ad6eddc451dac289aaedb4fd5266d01632bc.jpg"]];
            
            UIImage *image = [UIImage imageWithData:data];
            
            dispatch_async(dispatch_get_main_queue(), ^{
                self.imageView.image = image;
            });
            
        });
        
  • 相关阅读:
    Java多线程性能优化
    It is indirectly referenced from required .class files
    Switch基本知识
    HibernateTemplate 查询
    Hibernate工作原理及为什么要用?
    深入Java集合学习系列:HashMap的实现原理
    sql查询语句中的乱码 -- 前面加N
    Windows 8.1内置微软五笔输入法
    the rendering library is more recent than your version of android studio
    JBoss vs. Tomcat
  • 原文地址:https://www.cnblogs.com/keyan1102/p/4463231.html
Copyright © 2020-2023  润新知