多线程技术 多线程技术

多线程技术

多任务、多线程和多处理这些术语常常被交替地使用,可是它们在本质上是不一样的概念。多任务是指操做系统具备在任务间快速切换使得这些任务看起来是在同步执行的能力。在一个抢占式多任务系统中,应用程序能够随时被暂停。使用多线程技术,应用程序能够把它的任务分配到单独的线程中执行。在多线程程序中,操做系统让一个线程的代码执行一段时间(被称为时间片)后,会切换到另外的线程继续运行。暂停某个线程的运行而开始执行另外一个线程的行为被称为线程切换。一般状况下,操做系统进行线程切换的速度很是快,令用户以为有多个线程在同时运行同样。多处理指的是在一台计算机上使用多个处理器。在对称式多处理(SMP)系统中,操做系统自动使用计算机上全部的处理器来执行全部准备运行的线程。借助于多处理的能力,多线程应用程序能够同时执行多个线程,在更短的时间内完成更多的任务。

单线程应用程序移植到多核处理器上运行不会得到性能上的改进,这是由于它们只能在其中一个处理器上运行,而不能像多线程应用程序那样在全部的处理器上同时运行。并且单线程应用程序须要承受操做系统在处理器间切换所须要的开销。为了在多线程操做系统和/或多处理器计算机上得到最优异的性能,咱们必须使用多线程技术来编写应用程序。

目录

  1. 进行多线程编程的缘由
  2. 选择合适的操做系统
  3. LabWindows/CVI中的多线程技术简介
  4. 在LabWindows/CVI的辅助线程中运行代码
  5. 保护数据
  6.  避免死锁
  7.  监视和控制辅助线程
  8.  进程和线程优先级
  9.  消息处理
  10.  使用线程局部变量
  11.  在线程局部变量中存储动态分配的数据
  12.  在独立线程中运行的回调函数
  13.  为线程设定首选的处理器
  14.  额外的多线程技术资源

1. 进行多线程编程的缘由

在程序中使用多线程技术的缘由主要有四个。最多见的缘由是多个任务进行分割,这些任务中的一个或多个是对时间要求严格的并且易被其余任务的运行所干涉。例如,进行数据采集并显示用户界面的程序就很适合使用多线程技术实现。在这种类型的程序中,数据采集是时间要求严格的任务,它极可能被用户界面的任务打断。在LabWindows/CVI程序中使用单线程方法时,程序员可能须要从数据采集缓冲区读出数据并将它们显示到用户界面的曲线上,而后处理事件对用户界面进行更新。当用户在界面上进行操做(如在图表上拖动光标)时,线程将继续处理用户界面事件而不能返回到数据采集任务,这将致使数据采集缓冲区的溢出。而在LabWindows/CVI程序中使用多线程技术时,程序员能够将数据采集操做放在一个线程中,而将用户界面处理放在另外一个线程中。这样,在用户对界面进行操做时,操做系统将进行线程切换,为数据采集线程提供完成任务所需的时间。javascript

在程序中使用多线程技术的第二个缘由是程序中可能须要同时进行低速的输入/输出操做。例如,使用仪器来测试电路板的程序将从多线程技术中得到显著的性能提高。在LabWindows/CVI程序中使用单线程技术时,程序员须要从串口发送数据,初始化电路板。,程序须要等待电路板完成操做以后,再去初始化测试仪器。必需要等待测试仪器完成初始化以后,再进行测量,。在LabWindows/CVI程序中使用多线程技术时,你可使用另外一个线程来初始化测试仪器。这样,在等待电路板初始化的同时等待仪器初始化。低速的输入/输出操做同时进行,减小了等待所须要的时间总开销。php

在程序中使用多线程技术的第三个缘由是借助多处理器计算机来提升性能。计算机上的每一个处理器能够都执行一个线程。这样,在单处理器计算机上,操做系统只是使多个线程看起来是同时执行的,而在多处理器计算机上,操做系统才是真正意义上同时执行多个线程的。例如,进行数据采集、将数据写入磁盘、分析数据而且在用户界面上显示分析数据,这样的程序极可能经过多线程技术和多处理器计算机运行获得性能提高。将数据写到磁盘上和分析用于显示的数据是能够同时执行的任务。css

在程序中使用多线程技术的第四个缘由是在多个环境中同时执行特定的任务。例如,程序员能够在应用程序中利用多线程技术在测试舱进行并行化测试。使用单线程技术,应用程序须要动态分配空间来保存每一个舱中的测试结果。应用程序须要手动维护每一个记录及其对应的测试舱的关系。而使用多线程技术,应用程序能够建立独立的线程来处理每一个测试舱。而后,应用程序可使用线程局部变量为每一个线程建立测试结果记录。测试舱与结果记录间的关系是自动维护的,使应用程序代码得以简化。html

至页首前端

2. 选择合适的操做系统

微软公司的Windows 9x系列操做系统不支持多处理器计算机。因此,你必须在多处理器计算机上运行Windows Vista/XP/2000/NT 4.0系统来享受多处理器带来的好处。并且,即便在单处理器计算机上,多线程程序在Windows Vista/XP/2000/NT 4.0上的性能也比在Windows 9x上好。这要归功于Windows Vista/XP/2000/NT 4.0系统有着更为高效的线程切换技术。可是,这种性能上的差异在多数多线程程序中体现得并非十分明显。vue

对于程序开发,特别是编写和调试多线程程序而言,Windows Vista/XP/2000/NT 4.0系列操做系统比Windows 9x系列更为稳定,当运行操做系统代码的线程被暂停或终止的时候,操做系统的一些部分有可能出于不良状态中。这种状况使得Windows 9x操做系统崩溃的概率远远高于Windows Vista/XP/2000/NT 4.0系统的概率。因此,NI公司推荐用户使用运行Windows Vista/XP/2000/NT 4.0操做系统的计算机来开发多线程程序。java

至页首python

3. LabWindows/CVI中的多线程技术简介

NI LabWindows/CVI软件自二十世纪九十年代中期诞生之日起就支持多线程应用程序的建立。如今,随着多核CPU的普遍普及,用户可使用LabWindows/CVI来充分利用多线程技术的优点。jquery

与Windows SDK threading API(Windows 软件开发工具包线程API)相比,LabWindows/CVI的多线程库提供了如下多个性能优化:linux

  • Thread pools帮助用户将函数调度到独立的线程中执行。Thread pools处理线程缓存来最小化与建立和销毁线程相关的开销。
  • Thread-safe queues对线程间的数据传递进行了抽象。一个线程能够在另外一个线程向队列写入数据的同时,从队列中读取数据。
  • Thread-safe variables高效地将临界代码段和任意的数据类型结合在一块儿。用户能够调用简单的函数来获取临界代码段,设定变量值,而后释放临界代码段。
  • Thread locks提供了一致的API并在必要时自动选择合适的机制来简化临界代码段和互斥量的使用。例如,若是须要在进程间共享互斥锁,或者线程须要在等待锁的时候处理消息,LabWindows/CVI会自动使用互斥量。临界代码段使用在其它场合中,由于它更加高效。
  • Thread-local variables为每一个线程提供变量实例。操做系统对每一个进程可用的线程局部变量的数量进行了限制。LabWindows/CVI在实现过程当中对线程局部变量进行了增强,程序中的全部线程局部变量只使用一个进程变量。

能够在Utility Library»Multithreading下的LabWindows/CVI库函数树状图中找到全部的多线程函数。

至页首

4. 在LabWindows/CVI的辅助线程中运行代码

单线程程序中的线程被称为主线程。在用户告诉操做系统开始执行特定的程序时,操做系统将建立主线程。在多线程程序中,除了主线程外,程序还通知操做系统建立其余的线程。这些线程被称为辅助线程。主线程和辅助线程的主要区别在于它们开始执行的位置。操做系统从main或者WinMain函数开始执行主线程,而由开发人员来指定辅助线程开始执行的位置。

在典型的LabWindows/CVI多线程程序中,开发者使用主线程来建立、显示和运行用户界面,而使用辅助线程来进行其它时间要求严格的操做,如数据采集等。LabWindows/CVI提供了两种在辅助进程中运行代码的高级机制。这两种机制是线程池(thread pools)和异步定时器。线程池适合于执行若干次的或者一个循环内执行的任务。而异步定时器适合于按期进行的任务。

使用线程池

为了使用LabWindows/CVI的线程池在辅助线程中执行代码,须要调用Utility Library中的CmtScheduleThreadPoolFunction函数。将须要在辅助线程中运行的函数名称传递进来。线程池将这个函数调度到某个线程中执行。根据配置状况和当前的状态,线程池可能会建立新的线程来执行这个函数、也可能会使用已存在的空闲进程执行函数或者会等待一个活跃的线程变为空闲而后使用该线程执行预约的函数。传递给CmtScheduleThreadPoolFunction的函数被称为线程函数。线程池中的线程函数能够选择任意的名称,可是必须遵循如下原型:

int CVICALLBACK ThreadFunction (void *functionData);

下面的代码显示了如何使用CmtScheduleThreadPoolFunction函数在辅助进程中执行一个数据采集的线程。

int CVICALLBACK DataAcqThreadFunction (void *functionData);
int main(int argc, char *argv[])
{
    int panelHandle;
    int functionId;
 
    if (InitCVIRTE (0, argv, 0) == 0)
      return -1; /* out of memory */
    if ((panelHandle = LoadPanel(0, "DAQDisplay.uir", PANEL)) < 0)
      return -1;
    DisplayPanel (panelHandle);

    CmtScheduleThreadPoolFunction (DEFAULT_THREAD_POOL_HANDLE, DataAcqThreadFunction, NULL, &functionId);
    RunUserInterface ();
    DiscardPanel (panelHandle);
    CmtWaitForThreadPoolFunctionCompletion (DEFAULT_THREAD_POOL_HANDLE, functionId, 0);
    return 0;
}
int CVICALLBACK DataAcqThreadFunction (void *functionData)
{
    while (!quit) {
        Acquire(. . .);
        Analyze(. . .);
    }
    return 0;
}

在前面的代码中,主线程调用了CmtScheduleThreadPoolFunction函数,使线程池建立了一个新的线程来运行DataAcqThreadFunction线程函数。主线程从CmtScheduleThreadPoolFunction函数返回,而无须等待DataAcqThreadFunction函数完成。在辅助线程中的DataAcqThreadFunction函数与主线程中的调用是同时执行的。

CmtScheduleThreadPoolFunction函数的第一个参数表示用于进行函数调度的线程池。LabWindows/CVI的Utility Library中包含了内建的默认线程池。传递常数DEFAULT_THREAD_POOL_HANDLE表示用户但愿使用默认的线程池。可是用户不能对默认线程池的行为进行自定义。用户能够调用CmtNewThreadPool函数来建立自定义的线程池。CmtNewThreadPool函数返回一个线程池句柄,这个句柄将做为第一个参数传递给CmtScheduleThreadPoolFunction函数。程序员须要调用CmtDiscardThreadPool函数来释放由CmtNewThreadPool函数建立的线程池资源。

CmtScheduleThreadPoolFunction函数中的最后一个参数返回一个标识符,用于在后面的函数调用中引用被调度的函数。调用CmtWaitForThreadPoolFunctionCompletion函数使得主线程等待线程池函数结束后再退出。若是主线程在辅助线程完成以前退出,那么可能会形成辅助线程不能正确地清理分配到的资源。这些辅助线程使用的库也不会被正确的释放掉。

使用异步定时器

为了使用LabWindows/CVI的异步定时器在辅助线程中运行代码,须要调用Toolslib中的NewAsyncTimer函数。须要向函数传递在辅助线程中运行的函数名称和函数执行的时间间隔。传递给NewAsyncTimer的函数被称为异步定时器回调函数。异步定时器仪器驱动程序会按照用户指定的周期调用异步定时器回调函数。异步定时器回调函数的名称是任意的,可是必须遵循下面的原型:

 int CVICALLBACK FunctionName (int reserved, int timerId, int event, void *callbackData, int eventData1, int eventData2);

因为LabWindows/CVI的异步定时器仪器驱动使用Windows多媒体定时器来实现异步定时器回调函数,因此用户可指定的最小间隔是随使用的计算机不一样而变化的。若是用户指定了一个比系统可用的最大分辨率还小的时间间隔,那么可能会产生不可预知的行为。不可预知的行为一般发生在设定的时间间隔小于10ms时。同时,异步定时器仪器驱动使用一个多媒体定时器线程来运行单个程序中注册的全部异步定时器回调函数。因此,若是用户但愿程序并行地执行多个函数,那么NI公司推荐使用LabWindows/CVI Utility Library中的线程池函数来代替异步定时器函数。

至页首

5. 保护数据

在使用辅助线程的时候,程序员须要解决的一个很是关键的问题是数据保护。在多个线程同时进行访问时,程序须要对全局变量、静态局部变量和动态分配的变量进行保护。不这样作会致使间歇性的逻辑错误发生,并且很难发现。LabWindows/CVI提供了各类高级机制帮助用户对受到并发访问的数据进行保护。保护数据时,一个重要的考虑就是避免死锁。

若是一个变量被多个线程访问,那么它必须被保护,以确保它的值可靠。例以下面一个例子,一个多线程程序在多个线程中对全局整型counter变量的值进行累加。

count = count + 1;

这段代码按照下列CPU指令顺序执行的:

1.将变量值移入处理器的寄存器中

2.增长寄存器中的变量值

3.把寄存器中的变量值写回count变量

因为操做系统可能在线程运行过程当中的任意时刻打断线程,因此执行这些指令的两个线程可能按照以下的顺序进行(假设count初始值为5):

线程1:将count变量的值移到寄存器中。(count=5,寄存器=5),而后切换到线程2(count=5,寄存器未知)。

线程2:将count变量的值移到寄存器中(count=5,寄存器=5)。

线程2: 增长寄存器中的值(count=5,寄存器=6)。

线程2: 将寄存器中的值写回count变量(count=6,寄存器=6),而后切换回线程1.(count=6,寄存器=5)。

线程1: 增长寄存器的值。(count=6,寄存器=6)。

线程1: 将寄存器中的值写回count变量(count = 6, register = 6)。

因为线程1在增长变量值并将其写回以前被打断,因此变量count的值被设为6而不是7。操做系统为系统中地每个线程的寄存器都保存了副本。即便编写了count++这样的代码,用户仍是会遇到相同的问题,由于处理器会将代码按照多条指令执行。注意,特定的时序状态致使了这个错误。这就意味着程序可能正确运行1000次,而只有一次故障。经验告诉咱们,有着数据保护不当问题的多线程程序在测试的过程当中一般是正确的,可是一到客户安装并运行它们时,就会发生错误。

须要保护的数据类型

只有程序中的多个线程能够访问到的数据是须要保护的。全局变量、静态局部变量和动态分配内存位于一般的内存空间中,程序中的全部线程均可以访问它们。多个线程对内存空间中存储的这些类型的数据进行并发访问时,必须加以保护。函数参数和非静态局部变量位于堆栈上。操做系统为每一个线程分配独立的堆栈。所以,每一个线程都拥有参数和非静态局部变量的独立副本,因此它们不须要为并发访问进行保护。下面的代码显示了必须为并发访问而保护的数据类型。

int globalArray[1000];// Must be protected
static staticGlobalArray[500];// Must be protected
int globalInt;// Must be protected

void foo (int i)// i does NOT need to be protected
{
    int localInt;// Does NOT need to be protected
    int localArray[1000];// Does NOT need to be protected
    int *dynamicallyAllocdArray;// Must be protected
    static int staticLocalArray[1000];// Must be protected

    dynamicallyAllocdArray = malloc (1000 * sizeof (int));
}

如何保护数据

一般说来,在多线程程序中保存数据须要将保存数据的变量与操做系统的线程锁对象关联起来。在读取或者设定变量值的时候,须要首先调用操做系统API函数来获取操做系统的线程锁对象。在读取或设定好变量值后,须要将线程锁对象释放掉。在一个特定的时间内,操做系统只容许一个线程得到特定的线程锁对象。一旦线程调用操做系统API函数试图获取另外一个线程正在持有的线程锁对象,那么试图获取线程锁对象的线程回在操做系统API获取函数中等待,直到拥有线程锁对象的线程将它释放掉后才返回。试图获取其它线程持有的线程锁对象的线程被称为阻塞线程。LabWindows/CVI Utility Library提供了三种保护数据的机制:线程锁、线程安全变量和线程安全队列。

线程锁对操做系统提供的简单的线程锁对象进行了封装。在三种状况下,你可能要使用到线程锁。若是有一段须要访问多个共享数据变量的代码,那么在运行代码前须要得到线程锁,而在代码运行后释放线程锁。与对每段数据都进行保护相比,这个方法的好处是代码更为简单,并且不容易出错。缺点是减低了性能,由于程序中的线程持有线程锁的时间可能会比实际须要的时间长,这会形成其它线程为得到线程锁而阻塞(等待)的时间变长。使用线程锁的另外一种状况是须要对访问非线程安全的第三方库函数时进行保护。例如,有一个非线程安全的DLL用于控制硬件设备而你须要在多个线程中调用这个DLL,那么能够在线程中调用DLL前建立须要得到的线程锁。第三种状况是,你须要使用线程锁来保护多个程序间共享的资源。共享内存就是这样一种资源。

线程安全变量技术将操做系统的线程锁对象和须要保护的数据结合起来。与使用线程锁来保护一段数据相比,这种方法更为简单并且不容易出错。你必须使用线程安全变量来保护全部类型的数据,包括结构体类型。线程安全变量比线程锁更不容易出错,是由于用户须要调用Utility Library API函数来访问数据。而API函数获取操做系统的线程锁对象,避免用户不当心在未获取OS线程锁对象的状况下对数据进行访问的错误。线程安全变量技术比线程锁更简单,由于用户只须要使用一个变量(线程安全变量句柄),而线程锁技术则须要使用两个变量(线程锁句柄和须要保护的数据自己)。

线程安全队列是一种在线程间进行安全的数组数据传递的机制。在程序中有一个线程生成数组数据而另一个线程对数组数据进行处理时,须要使用线程安全队列。这类程序的一个例子就是在一个线程中采集数据,而在另外一个线程中分析数据或者将数据显示在LabWindows/CVI的用户界面上。与一个数组类型的线程安全变量相比,线程安全队列有着以下的优点:

  • 线程安全队列在其内部使用了一种锁策略,一个线程能够从队列读取数据而同时另外一个线程向队列中写入数据(例如,读取和写入线程不会互相阻塞)。
  • 用户能够为基于事件的访问配置线程安全队列。用户能够注册一个读取回调函数,在队列中有必定数量的数据可用时,调用这个函数,而且/或者注册一个写入回调函数,在队列中有必定的空间可用时,调用这个函数。
  • 用户能够对线程安全队列进行配置,使得在数据增长而空间已满时,队列能够自动生长。

线程锁技术

在程序初始化的时候,调用CmtNewLock函数来为每一个须要保护的数据集合建立线程锁。这个函数返回一个句柄,用户可使用它在后续的函数调用中指定线程锁。在访问由锁保护的数据和代码前,线程必须调用CmtGetLock函数来获取线程锁。在访问数据后,线程必须调用CmtReleaseLock函数来释放线程锁。在同一个线程中,能够屡次调用CmtGetLock(不会对后续调用产生阻塞),可是用户每一次调用CmtGetLock都须要调用一次CmtReleaseLock来释放。在程序退出时,调用CmtDiscardLock函数来释放线程锁资源。下面的代码演示了如何使用LabWindows/CVI Utility Library中的线程锁来保护全局变量。

int lock;
int count;

int main (int argc, char *argv[])
{
    int functionId;
    CmtNewLock (NULL, 0, &lock);
    CmtScheduleThreadPoolFunction (DEFAULT_THREAD_POOL_HANDLE, ThreadFunction, NULL, &functionId);
    CmtGetLock (lock);
    count++;
    CmtReleaseLock (lock);
    CmtWaitForThreadPoolFunctionCompletion (DEFAULT_THREAD_POOL_HANDLE, functionId, 0);
    CmtDiscardLock (lock);
}
int CVICALLBACK ThreadFunction (void *functionData)
{
    CmtGetLock(lock);
    count++;
    CmtReleaseLock(lock);
    return 0;
}

线程安全变量

线程安全变量技术将数据和操做系统线程锁对象结合成为一个总体。这个方法避免了多线程编程中一个常见的错误:程序员在访问变量时每每忘记首先去得到锁。这种方法还使得在函数间传递保护的数据变得容易,由于只须要传递线程安全变量句柄而不须要既传递线程锁句柄又要传递保护的变量。LabWindows/CVI Utility Library API中包含了几种用于建立和访问线程安全变量的函数。利用这些函数能够建立任何类型的线程安全变量。由于,传递到函数中的参数在类型上是通用的,并且不提供类型安全。一般,你不会直接调用LabWindows/CVI Utility Library中的线程安全变量函数。

LabWindows/CVI Utility Library中的头文件中包含了一些宏,它们提供了配合Utility Library函数使用的类型安全的封装函数。除了提供类型安全,这些宏还帮助避免了多线程编程中的其它两个常见错误。这些错误是在访问数据后忘记释放锁对象,或者是在前面没有获取锁对象时试图释放锁对象。使用DefineThreadSafeScalarVar和DefineThreadSafeArrayVar宏来建立线程安全变量和类型安全的函数供使用和访问。若是须要从多个源文件中访问线程安全变量,请在include(.h)文件中使用DeclareThreadSafeScalarVar或者DeclareThreadSafeArrayVar宏来建立访问函数的声明。DefineThreadSafeScalarVar (datatype, VarNamemaxGetPointerNestingLevel)宏建立如下访问函数:

int InitializeVarName (void);
void UninitializeVarName (void);
datatype *GetPointerToVarName (void);
void ReleasePointerToVarName (void);
void SetVarName (datatype val);
datatype GetVarName (void);

注意事项:这些宏使用传递进来的第二个参数(在这个例子中为VarName)做为标识来为线程安全变量建立自定义的访问函数名称。

注意事项maxGetPointerNestingLevel参数将在“检测GetPointerToVarName不匹配调用”一节中进行进一步讨论。

在第一次访问线程安全变量前首先调用一次(只在一个线程里)InitializeVarName函数。在程序停止前调用UninitializeVarName函数。若是须要对变量当前的值进行更改(如,增长一个整数的值),那么请调用GetPointerToVarName函数,更改变量值,而后调用ReleasePointerToVarName函数。在同一个线程中,能够屡次调用GetPointerToVarName函数(在后续的调用中不会发生阻塞),可是必须调用相同次数的ReleasePointerToVarName函数与GetPointerToVarName一一对应。若是在相同的线程中,调用了ReleasePointerToVarName函数,而前面没有与之相匹配的GetPointerToVarName调用,那么ReleasePointerToVarName将会报告一个run-time error错误。

若是须要对变量值进行设定而不须要考虑其当前值,那么请调用SetVarName函数。若是须要得到变量的当前值,请调用GetVarName函数。须要了解的一点是,在GetVarName从内存中读出变量值后而在其将变量值返回给你前,变量的值是有可能改变的。

下面的代码显示了如何使用线程安全变量做为前面例子中提到的计数变量。

DefineThreadSafeScalarVar (int, Count, 0);
int CVICALLBACK ThreadFunction (void *functionData);

int main (int argc, char *argv[])
{
    int functionId;
    int *countPtr;
   
    InitializeCount();
    CmtScheduleThreadPoolFunction (DEFAULT_THREAD_POOL_HANDLE, ThreadFunction, NULL, &functionId);
    countPtr = GetPointerToCount();
    (*countPtr)++;
    ReleasePointerToCount();
    CmtWaitForThreadPoolFunctionCompletion (DEFAULT_THREAD_POOL_HANDLE, functionId, 0);
    UninitializeCount();
    return 0;
}
int CVICALLBACK ThreadFunction (void *functionData)
{
    int *countPtr;

    countPtr = GetPointerToCount();
    (*countPtr)++;
    ReleasePointerToCount();
    return 0;
}

使用数组做为线程安全变量


DefineThreadSafeArrayVar宏与DefineThreadSafeScalarVar宏类似,可是它还须要一个额外的参数来指定数组中元素的个数。同时,与DefineThreadSafeScalarVar不一样,DefineThreadSafeArrayVar没有定义GetVarName和SetVarName函数。下面的声明定义了有10个整数的线程安全数组。
DefineThreadSafeArrayVar (int, Array, 10, 0);

将多个变量结合成单个线程安全变量

若是有多个彼此相关的变量,那么必须禁止两个线程同时对这些变量进行修改。例如,有一个数组和记录数组中有效数据数目的count变量。若是一个线程须要删除数组中的数据,那么在另外一个线程访问数据前,必须对数组和变量count值进行更新。虽然可使用单个LabWindows/CVI Utility Library线程锁来对这两种数据的访问保护,可是更安全的作法是定义一个结构体,而后使用这个结构体做为线程安全变量。下面的例子显示了如何使用线程安全变量来安全地向数组中填加一个数据。

typedef struct {
    int data[500];
    int count;
} BufType;

DefineThreadSafeVar(BufType, SafeBuf);

void StoreValue(int val)
{
    BufType *safeBufPtr;
    safeBufPtr = GetPointerToSafeBuf();
    safeBufPtr->data[safeBufPtr->count] = val;
    safeBufPtr->count++;
    ReleasePointerToSafeBuf();
}

检测对GetPointerToVarName的不匹配调用

能够经过DefineThreadSafeScalarVar和DefineThreadSafeArrayVar的最后一个参数(maxGetPointerNestingLevel),来指定最大数目的嵌套调用。一般能够把这个参数设为0,这样GetPointerToVarName在检测到同一线程中对GetPointerToVarName的两次连续调用而中间没有对ReleasePointerToVarName进行调用时,就会报出一个运行错误。例如,下面的代码在第二次执行的时候会报出run-time error的错误,由于它忘记了调用ReleasePointerToCount函数。 

int IncrementCount (void)
{
    int *countPtr;

    countPtr = GetPointerToCount(); /* run-time error on second execution */
    (*countPtr)++;
    /* Missing call to ReleasePointerToCount here */
    return 0;
} 

 

若是代码中必须对GetPointerToVarName进行嵌套调用时,那么可将maxGetPointerNestingLevel参数设为一个大于零的整数。例如,下面的代码将maxGetPointerNestingLevel参数设定为1,所以它容许对GetPointerToVarName进行一级嵌套调用。

DefineThreadSafeScalarVar (int, Count, 1);
int Count (void)
{
    int *countPtr;
    countPtr = GetPointerToCount();
    (*countPtr)++;
    DoSomethingElse(); /* calls GetPointerToCount */
    ReleasePointerToCount ();
    return 0;
}
void DoSomethingElse(void)
{
    int *countPtr;
    countPtr = GetPointerToCount(); /* nested call to GetPointerToCount */
    ... /* do something with countPtr */
    ReleasePointerToCount ();
}

 

若是不知道GetPointerToVarName的最大嵌套级别,那么请传递TSV_ALLOW_UNLIMITED_NESTING来禁用对GetPointerToVarName函数的不匹配调用检查。

线程安全队列

使用LabWindows/CVI Utility Library的线程安全队列,能够在线程间安全地传递数据。当须要用一个线程来采集数据而用另外一个线程来处理数据时,这种技术很是有用。线程安全队列在其内部处理全部的数据锁定。一般说来,应用程序中的辅助线程获取数据,而主线程在数据可用时读取数据而后分析并/或显示数据。下面的代码显示了线程如何使用线程安全队列将数据传递到另一个线程。在数据可用时,主线程利用回调函数来读取数据。

int queue;
int panelHandle;

int main (int argc, char *argv[])
{
    if (InitCVIRTE (0, argv, 0) == 0)
        return -1; /* out of memory */
    if ((panelHandle = LoadPanel(0, "DAQDisplay.uir", PANEL)) < 0)
        return -1;
    /* create queue that holds 1000 doubles and grows if needed */
    CmtNewTSQ(1000, sizeof(double), OPT_TSQ_DYNAMIC_SIZE, &queue);
    CmtInstallTSQCallback (queue, EVENT_TSQ_ITEMS_IN_QUEUE, 500, QueueReadCallback, 0, CmtGetCurrentThreadID(), NULL);
    CmtScheduleThreadPoolFunction (DEFAULT_THREAD_POOL_HANDLE, DataAcqThreadFunction, NULL, NULL);
    DisplayPanel (panelHandle);
    RunUserInterface();
    . . .
    return 0;
}
void CVICALLBACK QueueReadCallback (int queueHandle, unsigned int event, int value, void *callbackData)
{
    double data[500];
    CmtReadTSQData (queue, data, 500, TSQ_INFINITE_TIMEOUT, 0);
}

至页首

6.  避免死锁

当两个线程同时等待对方持有的线程锁定对象时,代码就不能继续运行了。这种情况被称为死锁。若是用户界面线程发生死锁,那么它就不能响应用户的输入。用户必须非正常地结束程序。下面的例子解释了死锁是如何发生的。

线程1:调用函数来获取线程锁A(线程1:无线程锁,线程2:无线程锁)。

线程1:从获取线程锁的函数返回(线程1:持有线程锁A,线程2:无线程锁)。

切换到线程2:(线程1:持有线程锁A,线程2:无线程锁)。

线程2:调用函数来获取线程锁B(线程1:持有线程锁A,线程2:无线程锁)。

线程2:从获取线程锁的函数返回(线程1:持有线程锁A,线程2:持有线程锁B)。

线程2:调用函数来获取线程锁A(线程1:持有线程锁A,线程2:持有线程锁B)。

线程2:因为线程1持有线程锁A而被阻塞(线程1:持有线程锁A,线程2:持有线程锁B)。

切换到线程1:调用函数来获取线程锁B(线程1:持有线程锁A,线程2:持有线程锁B)。

线程1:调用函数来获取线程锁B(线程1:持有线程锁A,线程2:持有线程锁B)。

线程1:因为线程2持有线程锁A而被阻塞(线程1:持有线程锁A,线程2:持有线程锁B)。

与不对数据进行保护时产生的错误类似,因为程序运行的状况不一样致使线程切换的时序不一样,死锁错误间歇性地发生。例如,若是直到线程1持有线程锁A和B后才切换到线程2,那么线程1就能够完成工做而释放掉这些线程锁,让线程2在晚些时候获取到。就像上面所说的那样,死锁现象只有在线程同时获取线程锁时才会发生。因此你可使用简单的规则来避免这种死锁。当须要获取多个线程锁对象时,程序中的每一个线程都须要按照相同的顺序来获取线程锁对象。下面的LabWindows/CVI Utility Library函数获取线程锁对象,而且返回时并不释放这些对象。

  • CmtGetLock
  • CmtGetTSQReadPtr
  • CmtGetTSQWritePtr

注意事项:一般说来,不须要直接调用CmtGetTSVPtr函数。它是经过DeclareThreadSafeVariable宏建立的GetPtrToVarName函数调用的。所以,对于调用的GetPtrToVarName函数须要将它做为线程锁对象获取函数来对待,应该注意死锁保护的问题。
The following Windows SDK functions can acquire thread-locking objects without releasing them before returning. Note: This is not a comprehensive list.

下面的Windows SDK函数能够获取线程锁对象但在返回时并不释放这些对象。注意,这不是完整的列表。

  • EnterCriticalSection
  • CreateMutex
  • CreateSemaphore
  • SignalObjectAndWait
  • WaitForSingleObject
  • MsgWaitForMultipleObjectsEx

至页首

7.  监视和控制辅助线程

在把一个函数调度到独立的线程中运行时,须要对被调度函数的运行状态进行监视。为了得到被调度函数的运行状态,调用CmtGetThreadPoolFunctionAttribute来得到ATTR_TP_FUNCTION_EXECUTION_STATUS属性的值。也能够注册一个回调函数,线程池调用以后当即运行被调度的函数和/或开始运行后当即由线程池调用。若是须要注册这样的回调函数,必须使用CmtScheduleThreadFunctionAdv来对函数进行调度。

一般说来,辅助进程须要在主线程结束程序前完成。若是主线程在辅助线程完成以前结束,那么辅助线程将不可以将分配到的资源清理掉。同时,可能致使这些辅助线程所使用的库函数也不能被正确清除。

能够调用CmtWaitForThreadPoolFunctionCompletion函数来安全地等待辅助线程结束运行,而后容许主线程结束。

在一些例子中,辅助线程函数必须持续完成一些工做直到主线程让它中止下来。在这类状况下,辅助线程一般在while循环中完成任务。while循环的条件是主线程中设定的整数变量,当主线程须要告知辅助线程中止运行时,将其设为非零整数。下面的代码显示了如何使用while循环来控制辅助线程什么时候结束执行。

 volatile int quit = 0;

int main (int argc, char *argv[])
{
    int functionId;
    CmtScheduleThreadPoolFunction (DEFAULT_THREAD_POOL_HANDLE, ThreadFunction, NULL, &functionId);
    // This would typically be done inside a user interface
    // Quit button callback.
    quit = 1;
    CmtWaitForThreadPoolFunctionCompletion (DEFAULT_THREAD_POOL_HANDLE, functionId, 0);
    return 0;
}
int CVICALLBACK ThreadFunction (void *functionData)
{
    while (!quit) {
        . . .
    }
    return 0;
}

注意事项:若是使用volatile关键字,这段代码在通过优化的编译器(如Microsoft Visual C++)后功能是正常的。优化的编译器肯定while循环中的代码不会修改quit变量的值。所以,做为优化,编译器可能只使用quit变量在while循环条件中的初始值。使用volatile关键字是告知编译器另外一个线程可能会改变quit变量的值。这样,编译器在每次循环运行时都使用更新事后的quit变量值。

有些时候,当主线程进行其余任务的时候须要暂停辅助线程的运行。若是你暂停正在运行操做系统代码的线程,可能会使得操做系统处于非法状态。所以,在须要暂停的线程中须要始终调用Windows SDK的SuspendThreadfunction函数。这样,能够确保线程在运行关键代码时不被暂停。在另外一个线程中调用Windows SDK的ResumeThreadfunction是安全的。下面的代码展现了如何使用它们。

volatile int quit = 0;

int main (int argc, char *argv[])
{
    int functionId;
    CmtScheduleThreadPoolFunction (DEFAULT_THREAD_POOL_HANDLE, ThreadFunction, NULL, &functionId);
    // This would typically be done inside a user interface
    // Quit button callback.
    quit = 1;
    CmtWaitForThreadPoolFunctionCompletion (DEFAULT_THREAD_POOL_HANDLE, functionId, 0);
    return 0;
}
int CVICALLBACK ThreadFunction (void *functionData)
{
    while (!quit) {
        . . .
    }
    return 0;
} 

至页首

8.  进程和线程优先级

在Windows操做系统中,能够指定每一个进程和线程工做的相对重要性(被称为优先级)。若是给予进程或线程以较高的优先级,那么它们将得到比优先级较低的线程更好的优先选择。这意味着当多个线程须要运行的时候,具备最高优先级的线程首先运行。

Windows将优先级分类。同一进程中的全部线程拥有相同的优先级类别。同一进程中的每一个线程都有着与进程优先级类别相关的优先级。能够调用Windows SDK中的SetProcessPriorityClass函数来设定系统中线程的优先级。

NI公司不推荐用户将线程的优先级设为实时优先级,除非只在很短期内这样作。当进程被设为实时优先级时,它运行时系统中断会被阻塞。这会形成鼠标、键盘、硬盘及其它相当重要的系统特性不能工做,并极可能形成系统被锁定。

若是你是使用CmtScheduleThreadFunctionAdv函数来将函数调度到线程池中运行,那么还能够指定执行所调度函数的线程的优先级。线程池在运行被调度的函数前会改变线程优先级。在函数结束运行后,线程池会将线程优先级恢复到原来的优先级。可以使用CmtScheduleThreadFunctionAdv函数来在默认的和自定义的线程池中指定线程的优先级。

 

在建立自定义的LabWindows/CVI Utility Library线程池(调用CmtNewThreadPool函数)时,能够设定池中各线程的默认优先级。

至页首

9.  消息处理

每一个建立了窗口的线程必须对Windows消息进行处理以免系统锁定。用户界面库中的RunUserInterfacefunction函数包含了处理LabWindows/CVI用户界面事件和Windows消息的循环。用户界面库中的GetUserEvent和ProcessSystemEventsfunctions函数在每次被调用时对Windows消息进行处理。若是下列状况中的之一被知足,那么程序中的每一个线程都须要调用GetUserEventor和ProcessSystemEventsregularly函数来处理Windows消息。

  • 线程建立了窗口但没有调用RunUserInterface函数。
  • 线程建立了窗口并调用了RunUserInterface函数,可是在返回到RunUserInterface循环前须要运行的回调函数占用了大量时间(多于几百毫秒)。

可是,在代码中的某些地方不适合用于处理Windows消息。在LabWindows/CVI的用户界面线程中调用了GetUserEvent、ProcessSystemEvents或RunUserInterface函数时,线程能够调用一个用户界面回调函数。若是在用户界面回调函数中调用这些函数之一,那么线程将调用另一个回调函数。除非须要这样作,不然这种事件将产生不可预知的行为。

Utility Library中的多线程函数会形成线程在循环中等待,容许你指定是否在等待线程中对消息进行处理。例如,CmtWaitForThreadPoolFunctionCompletion函数中有个Option参数,可使用它来指定处理Windows消息的等待线程。

有的时候,线程对窗口的建立不是那么显而易见的。用户界面库函数如LoadPanel、CreatePanel和FileSelectPopup等都建立了用于显示和丢弃的窗口。这些函数还为每一个调用它们的线程建立了隐藏的窗口。在销毁可见的窗口时,这个隐藏的窗口并无被销毁。除了这些用户界面库函数外,各类其它的LabWindows/CVI库函数和Windows API函数建立了隐藏的背景窗口。为了不系统的锁定,必须在线程中对使用这两种方法建立的窗口的Windows消息进行处理。

至页首

10.  使用线程局部变量

线程局部变量与全局变量类似,能够在任意线程中对它们进行访问。可是,全局变量对于全部线程只保存一个值,而线程局部变量为每一个访问的线程保存一个独立的值。当程序中须要同时在多个上下文中进行相同的任务,而其中每一个上下文都对应一个独立的线程时,一般须要使用到线程局部变量。例如,你编写了一个并行的测试程序,其中的每一个线程处理一个待测单元,那么你可能须要使用线程局部变量来保存每一个单元的特定信息(例如序列号)。

Windows API提供了用于建立和访问线程局部变量的机制,可是该机制对每一个进程中可用的线程局部变量的数目进行了限定。LabWindows/CVI Utility Library中的线程局部变量函数没有这种限制。下面的代码展现了如何建立和访问一个保存了整数的线程局部变量。

volatile int quit = 0;
volatile int suspend = 0;
int main (int argc, char *argv[])
{
    int functionId;
    HANDLE threadHandle;
    CmtScheduleThreadPoolFunction (DEFAULT_THREAD_POOL_HANDLE, ThreadFunction, NULL, &functionId);
    . . .
    // This would typically be done in response to user input or a
    // change in program state.
    suspend = 1;
    . . .
    CmtGetThreadPoolFunctionAttribute (DEFAULT_THREAD_POOL_HANDLE, functionId, ATTR_TP_FUNCTION_THREAD_HANDLE, &threadHandle);
    ResumeThread (threadHandle);
    . . .
    return 0;
}
int CVICALLBACK ThreadFunction (void *functionData)
{
    while (!quit) {
        if (suspend) {
            SuspendThread (GetCurrentThread ());
            suspend = 0;
        }
        . . .
    }
    return 0;
} 

 

int CVICALLBACK ThreadFunction (void *functionData);
int tlvHandle;
int gSecondaryThreadTlvVal;

int main (int argc, char *argv[])
{
    int functionId;
    int *tlvPtr;

    if (InitCVIRTE (0, argv, 0) == 0)
        return -1; /* out of memory */
    CmtNewThreadLocalVar (sizeof(int), NULL, NULL, NULL, &tlvHandle);
    CmtScheduleThreadPoolFunction (DEFAULT_THREAD_POOL_HANDLE, ThreadFunction, 0, &functionId);
    CmtWaitForThreadPoolFunctionCompletion (DEFAULT_THREAD_POOL_HANDLE, functionId, 0);
    CmtGetThreadLocalVar (tlvHandle, &tlvPtr);
    (*tlvPtr)++;
    // Assert that tlvPtr has been incremented only once in this thread.
    assert (*tlvPtr == gSecondaryThreadTlvVal);
    CmtDiscardThreadLocalVar (tlvHandle);
    return 0;
}
int CVICALLBACK ThreadFunction (void *functionData)
{
    int *tlvPtr;

    CmtGetThreadLocalVar (tlvHandle, &tlvPtr);
    (*tlvPtr)++;
    gSecondaryThreadTlvVal = *tlvPtr;
    return 0;
}

至页首

11.  在线程局部变量中存储动态分配的数据

若是你使用线程局部变量来存储动态分配到的资源,那么你须要释放掉分配的资源的每个拷贝。也就是说,你须要释放掉每一个线程中分配到的资源拷贝。使用LabWindows/CVI的线程局部变量,你能够指定用于销毁线程局部变量的回调函数。当你销毁线程局部变量时,每一个访问过变量的线程都会调用指定的回调函数。下面的代码展现了如何建立和访问保存了动态分配的字符串的线程局部变量。

int CVICALLBACK ThreadFunction (void *functionData);
void CVICALLBACK StringCreate (char *strToCreate);
void CVICALLBACK StringDiscard (void *threadLocalPtr, int event, void *callbackData, unsigned int threadID);
int tlvHandle;
volatile int quit = 0;
volatile int secondStrCreated = 0;

int main (int argc, char *argv[])
{
    int functionId;

    if (InitCVIRTE (0, argv, 0) == 0)
        return -1; /* out of memory */
    CmtNewThreadLocalVar (sizeof(char *), NULL, StringDiscard, NULL, &tlvHandle);
    CmtScheduleThreadPoolFunction (DEFAULT_THREAD_POOL_HANDLE, ThreadFunction, "Secondary Thread", &functionId);
    StringCreate ("Main Thread");
    while (!secondStrCreated){
        ProcessSystemEvents ();
        Delay (0.001);
    }
    CmtDiscardThreadLocalVar (tlvHandle);
    quit = 1;
    CmtWaitForThreadPoolFunctionCompletion (DEFAULT_THREAD_POOL_HANDLE, functionId, 0);
    return 0;
}
int CVICALLBACK ThreadFunction (void *functionData)
{
   char **sString;

   // Create thread local string variable
   StringCreate ((char *)functionData);

   // Get thread local string and print it
   CmtGetThreadLocalVar (tlvHandle, &sString);
   printf ("Thread local string: %s\n", *sString);

   secondStrCreated = 1;

   while (!quit)
   {
       ProcessSystemEvents ();
       Delay (0.001);
   }

   return 0;
}
void CVICALLBACK StringCreate (char *strToCreate)
{
    char **tlvStringPtr;
    CmtGetThreadLocalVar (tlvHandle, &tlvStringPtr);
    *tlvStringPtr = malloc (strlen (strToCreate) + 1);
    strcpy (*tlvStringPtr, strToCreate);
}
void CVICALLBACK StringDiscard (void *threadLocalPtr, int event, void *callbackData, unsigned int threadID)
{
    char *str = *(char **)threadLocalPtr;
    free (str);
} 

一些分配的资源必须在分配到它们的线程中释放。这些资源被称为拥有线程关联度。例如,面板必须在建立它的线程中销毁掉。在调用CmtDiscardThreadLocalVar时,Utility Library在线程中调用被称为CmtDiscardThreadLocalVar的线程局部变量销毁回调函数。Utility Library为每个访问过该变量的线程调用一次销毁回调函数。它将threadID参数传递给销毁回调函数,这个参数指定了调用销毁回调函数的线程的ID号。你可使用这个线程ID来肯定是否能够直接释放掉拥有线程关联度的资源仍是必须在正确的线程中调用Toolslib中的PostDeferredCallToThreadAndWait函数来释放资源。下面的代码显示了如何更改前面的例子以在分配字符串的线程中将它们释放掉。

void CVICALLBACK StringDiscard (void *threadLocalPtr, int event, void *callbackData, unsigned int threadID)
{
    char *str = *(char **)threadLocalPtr;
   
    if (threadID == CmtGetCurrentThreadID ())
        free (str);
    else
        PostDeferredCallToThreadAndWait (free, str, threadID, POST_CALL_WAIT_TIMEOUT_INFINITE);
} 

至页首

12.  在独立线程中运行的回调函数

使用LabWindows/CVI中的一些库,你能够在系统建立的线程中接收回调函数。由于这些库会自动建立执行回调函数的线程,因此你不须要建立线程或者将函数调度到单独的线程中执行。在程序中,你仍然须要对这些线程和其它线程间共享的数据进行保护。这些回调函数的实现一般被称为是异步事件。

LabWindows/CVI的GPIB/GPIB 488.2库中,能够调用ibnotify来注册事件发生时GPIB/GPIB 488.2库调用的回调函数。你能够为每个电路板或器件指定一个回调函数。能够为事件指定调用的回调函数。GPIB/GPIB 488.2库会建立用于执行回调函数的线程。

在LabWindows/CVI的虚拟仪器软件构架 (VISA) 库中,你能够调用viInstallHandler函数来注册多个事件句柄(回调函数)用于在特定的ViSession 中接收VISA事件(I/O完成、服务请求等等)类型。VISA库一般建立独立的线程来执行回调函数。VISA可能会对一个进程中的全部回调函数使用同一个线程,或者对每一个ViSession 使用单独的线程。你须要为某个指定的事件类型调用viEnableEvent函数以通知VISA库调用已注册的事件句柄。

在LabWindows/CVI VXI库中,每一个中断或回调函数类型都有本身的回调注册和使能函数。例如,为了接收NI-VXI中断,你必须调用SetVXIintHandler和EnableVXIint函数。VXI库使用本身建立的独立线程来执行回调函数。对于同一进程中全部的回调函数,VXI都使用相同的线程。

至页首

13.  为线程设定首选的处理器

可使用平台SDK中的SetThreadIdealProcessor函数来指定执行某一线程的处理器。这个函数的第一个参数是线程句柄。第二个参数是以零为索引发始的处理器。能够调用LabWindows/CVI Utility Library中的CmtGetThreadPoolFunctionAttribute函数,使用ATTR_TP_FUNCTION_THREAD_HANDLE属性来获取线程池线程的句柄。能够调用LabWindows/CVI Utility Library中的CmtGetNumberOfProcessors函数来经过程序来肯定运行该程序的计算机上处理器的数量。

可使用平台SDK中的SetProcessAffinityMask函数来指定容许执行你的程序的处理器。可使用平台SDK中的SetThreadAffinityMask函数来指定容许执行程序中特定线程的处理器。传递到SetThreadAffinityMask中的mask变量必须是传递到SetProcessAffinityMask中的mask变量的子集。

这些函数只有程序在装有Microsoft Windows XP/2000/NT 4.0系统的多处理器计算机上运行才有效果。Microsoft Windows 9x系列的操做系统不支持多处理器计算机。

<script>
					(function(){
						function setArticleH(btnReadmore,posi){
							var winH = $(window).height();
							var articleBox = $("div.article_content");
							var artH = articleBox.height();
							if(artH > winH*posi){
								articleBox.css({
									'height':winH*posi+'px',
									'overflow':'hidden'
								})
								btnReadmore.click(function(){
									if(typeof window.localStorage === "object" && typeof window.csdn.anonymousUserLimit === "object"){
										if(!window.csdn.anonymousUserLimit.judgment()){
											window.csdn.anonymousUserLimit.Jumplogin();
											return false;
										}else if(!currentUserName){
											window.csdn.anonymousUserLimit.updata();
										}
									}
									
									articleBox.removeAttr("style");
									$(this).parent().remove();
								})
							}else{
								btnReadmore.parent().remove();
							}
						}
						var btnReadmore = $("#btn-readmore");
						if(btnReadmore.length>0){
							if(currentUserName){
								setArticleH(btnReadmore,3);
							}else{
								setArticleH(btnReadmore,1.2);
							}
						}
					})()
				</script>
				</article>
<div class="comment-edit-box d-flex">
	<a id="commentsedit"></a>
	<div class="user-img">
		<a href="//me.csdn.net/lwx_110" target="_blank">
			<img class="" src="https://avatar.csdn.net/C/D/4/3_lwx_110.jpg">
		</a>
	</div>
	<form id="commentform">
		<input type="hidden" id="comment_replyId">
		<textarea class="comment-content" name="comment_content" id="comment_content" placeholder="想对做者说点什么"></textarea>
		<div class="opt-box"> <!-- d-flex -->
			<div id="ubbtools" class="add_code">
				<a href="#insertcode" code="code" target="_self"><i class="icon iconfont icon-daima"></i></a>
			</div>
			<input type="hidden" id="comment_replyId" name="comment_replyId">
			<input type="hidden" id="comment_userId" name="comment_userId" value="">
			<input type="hidden" id="commentId" name="commentId" value="">
			<div style="display: none;" class="csdn-tracking-statistics tracking-click" data-mod="popu_384"><a href="#" target="_blank" class="comment_area_btn">发表评论</a></div>
			<div class="dropdown" id="myDrap">
				<a class="dropdown-face d-flex align-items-center" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
				<div class="txt-selected text-truncate">添加代码片</div>
				<svg class="icon d-block" aria-hidden="true">
					<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-triangledown"></use>
				</svg>
				</a>
				<ul class="dropdown-menu" id="commentCode" aria-labelledby="drop4">
					<li><a data-code="html">HTML/XML</a></li>
					<li><a data-code="objc">objective-c</a></li>
					<li><a data-code="ruby">Ruby</a></li>
					<li><a data-code="php">PHP</a></li>
					<li><a data-code="csharp">C</a></li>
					<li><a data-code="cpp">C++</a></li>
					<li><a data-code="javascript">JavaScript</a></li>
					<li><a data-code="python">Python</a></li>
					<li><a data-code="java">Java</a></li>
					<li><a data-code="css">CSS</a></li>
					<li><a data-code="sql">SQL</a></li>
					<li><a data-code="plain">其它</a></li>
				</ul>
			</div>  
			<div class="right-box">
				<span id="tip_comment" class="tip">还能输入<em>1000</em>个字符</span>
				<input type="submit" class="btn btn-sm btn-red btn-comment" value="发表评论">
			</div>
		</div>
	</form>
</div>

	<div class="comment-list-container">
	<a id="comments"></a>
	<div class="comment-list-box">
	</div>
	<div id="commentPage" class="pagination-box d-none"></div>
	
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/h3243212/article/details/51180173,BlogCommendFromBaidu_1,index_1&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/h3243212/article/details/51180173" target="_blank" title="java多线程核心技术梳理(附源码)">
			<h4 class="text-truncate oneline" style="width: 610px;">
					java多线程核心技术梳理(附源码)				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/7/8/C/3_h3243212.jpg" alt="h3243212" class="avatar-pic">
						<span class="namebox">
							<span class="name">h3243212</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">04-18</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						9297</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/h3243212/article/details/51180173" target="_blank" title="java多线程核心技术梳理(附源码)">
						<span class="desc oneline">本文对多线程基础知识进行梳理,主要包括多线程的基本使用,对象及变量的并发访问,线程间通讯,lock的使用,定时器,单例模式,以及线程状态与线程组。...</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/h3243212">来自:	<span class="blog_title"> brianway</span></a></span>
                    					</p>
		</div>
				</div>




		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/weixin_30531261/article/details/78567219,BlogCommendFromBaidu_2,index_2&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/weixin_30531261/article/details/78567219" target="_blank" title="为何要使用多线程技术">
			<h4 class="text-truncate oneline" style="width: 618px;">
					为何要使用<em>多线程技术</em>				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/4/A/C/3_weixin_30531261.jpg" alt="weixin_30531261" class="avatar-pic">
						<span class="namebox">
							<span class="name">weixin_30531261</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">11-18</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						295</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/weixin_30531261/article/details/78567219" target="_blank" title="为何要使用多线程技术">
						<span class="desc oneline">为何要使用多线程技术</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/weixin_30531261">来自:	<span class="blog_title"> LLLLEE 的博客</span></a></span>
                    					</p>
		</div>
				</div>

<div class="recommend-item-box recommend-ad-box"><div id="kp_box_59" data-pid="59" data-track-view="{&quot;mod&quot;:&quot;kp_popu_59-517&quot;,&quot;con&quot;:&quot;,,&quot;}" data-track-click="{&quot;mod&quot;:&quot;kp_popu_59-517&quot;,&quot;con&quot;:&quot;,,&quot;}"><div class="mediav_ad"><newsfeed class="newsfeed QIHOO__WEB__SO__1544408381510_845" id="QIHOO__WEB__SO__1544408381510_845" style="display:block;margin:0;padding:0;border:none;width:852px;height:52px;overflow-y:hidden;overflow-x:hidden;position:relative;text-align:left;"><info-div id="QIHOO__WEB__SO__1544408381510_845-info" style="zoom:1"><info-div class="QIHOO__WEB__SO__1544408381510_845 singleImage clk" data-href="https://s1.milkjpg.com/s?type=2&amp;r=20&amp;mv_ref=blog.csdn.net&amp;enup=CAABdZG9tggAAra9kXUA&amp;mvid=NjMyNDM3MTUyMDcxMjIxMTgwNDAwMTg&amp;bid=12c5244f6872987e&amp;price=AAAAAFwNzT0AAAAAAAS7JuFSdbz4+PoUTZq4/g==&amp;finfo=DAABCAABAAAAgggAAgAAAFIEAAM/WQp3LuI/qgAIAAIAAAADCgADLPTcp0x+RTQIAAQAAABVBgAGLbcIAAgAE9YgCgAJAAAAAAACEJQGAAoAAAYADDo9AA&amp;ugi=FcTgigEVyNtrTBUCFeIEFewEFQAAFc+u+vIKFgQVyAEA&amp;uai=FaixkwIlAhUEFqj55rjn4+n0WRXyCCXXqIyBBiUAFRoA&amp;ubi=Fcq9RxXY6rYCFbzq9RYVzN3SVxUEFRwWkuuN9hYWqPn7n/Gp7vRZNAIWqMKQgAglBhW66PGcBhW+BRUANvSft/yVwvLGGQA&amp;clickid=0&amp;cpx=__OFFSET_X__&amp;cpy=__OFFSET_Y__&amp;cs=__EVENT_TIME_START__&amp;ce=__EVENT_TIME_END__&amp;csign=ae758a17b72085a1&amp;csign2=QzWflBYie8G=&amp;url=http%3A%2F%2Fvip.108567.top%2F" data-pv="https://s1.milkjpg.com/s?type=1&amp;r=20&amp;tid=OTdlOGM0YWZiZDgyMGFiZWYzNmZkZDg1MTliNDUwNWY&amp;finfo=DAABCAABAAAAgggAAgAAAFIEAAM/WQp3LuI/qgAIAAIAAAADCgADLPTcp0x+RTQIAAQAAABVBgAGLbcIAAgAE9YgCgAJAAAAAAACEJQGAAoAAAYADDo9AA&amp;mv_ref=blog.csdn.net&amp;enup=CAABdZG9tggAAra9kXUA&amp;mvid=NjMyNDM3MTUyMDcxMjIxMTgwNDAwMTg&amp;bid=12c5244f6872987e&amp;ugi=FcTgigEVyNtrTBUCFeIEFewEFQAAFc+u+vIKFgQVyAEA&amp;uai=FaixkwIlAhUEFqj55rjn4+n0WRXyCCXXqIyBBiUAFRoA&amp;ubi=Fcq9RxXY6rYCFbzq9RYVzN3SVxUEFRwWkuuN9hYWqPn7n/Gp7vRZNAIWqMKQgAglBhW66PGcBhW+BRUANvSft/yVwvLGGQA&amp;ds=1&amp;price=AAAAAFwNzT0AAAAAAAS7JuFSdbz4+PoUTZq4/g==,https://max-l.mediav.com/rtb?type=2&amp;d=100&amp;b=12c5244f6872987e&amp;p=2255956&amp;l=1136674&amp;s=1&amp;z=1&amp;w=AAAAAFwNzT0AAAAAAAS7RqYr2849xx8hARJPnw==&amp;k=pBWbOQAAAAA=&amp;i=OktN8I21DANA&amp;v=63243715207122118040018" data-clk="https://max-l.mediav.com/rtb?type=3&amp;d=100&amp;b=12c5244f6872987e&amp;p=2255956&amp;l=1136674&amp;s=1&amp;k=pBWbOQAAAAA=&amp;i=OktN8I21DANA&amp;v=63243715207122118040018&amp;x=__OFFSET_X__&amp;y=__OFFSET_Y__&amp;st=__EVENT_TIME_START__&amp;et=__EVENT_TIME_END__&amp;tc=&amp;turl=">
<info-div class="wrap">
    <info-div class="singleImage-img singleImage-img-left">
        <info-div class="img" style="background-image:url(https://s3m.mediav.com/galileo/585573-5334b137e9be85f31c7ba630b14a9b16.jpg)"><info-div class="ads-tag"></info-div></info-div>
    </info-div>
    <info-div class="singleImage-body singleImage-body-left">
        <info-div class="singleImage-title">男人行房时间短?老中医说:多吃它。时间延长40分钟</info-div>
        <info-div class="singleImage-desc">万源鑫裕 · 燨燚</info-div>
    </info-div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/qq296398300/article/details/53841202,BlogCommendFromBaidu_3,index_3&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/qq296398300/article/details/53841202" target="_blank" title="【JAVA秒会技术之玩转多线程】多线程那些事儿(一)">
			<h4 class="text-truncate oneline" style="width: 610px;">
					【JAVA秒会技术之玩转多线程】多线程那些事儿(一)				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/E/7/D/3_qq296398300.jpg" alt="qq296398300" class="avatar-pic">
						<span class="namebox">
							<span class="name">qq296398300</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">12-23</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						1267</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/qq296398300/article/details/53841202" target="_blank" title="【JAVA秒会技术之玩转多线程】多线程那些事儿(一)">
						<span class="desc oneline">多线程那些事儿(一)

    如今只要出去面试,关于“Java多线程”的问题,几乎没有一家单位不问的,可见其重要性。因而博主抽空研究了一下,确实颇有意思!如下是我综合整理了网上的各类资料,和我的的一些…

来自: qq296398300的博客



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/aristolto/article/details/50628532,BlogCommendFromBaidu_4,index_4&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/aristolto/article/details/50628532" target="_blank" title="多线程技术在数据实时采集分析中的应用">
			<h4 class="text-truncate oneline" style="width: 610px;">
					<em>多线程技术</em>在数据实时采集分析中的应用				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/E/A/F/3_aristolto.jpg" alt="aristolto" class="avatar-pic">
						<span class="namebox">
							<span class="name">aristolto</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">02-03</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						3740</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/aristolto/article/details/50628532" target="_blank" title="多线程技术在数据实时采集分析中的应用">
						<span class="desc oneline">多线程技术在数据实时采集分析中的应用

 
数字接口设备是实现标准422串行总线到自定义串行总线转换的专用通讯设备。数字接口测试系统根据数字接口设备的工做原理,输出422串行数据和自定义串行总线的控制信…

来自: aristolto的专栏



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/supersnow0622/article/details/56494682,BlogCommendFromBaidu_5,index_5&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/supersnow0622/article/details/56494682" target="_blank" title="Java多线程核心技术(一):基础知识总结">
			<h4 class="text-truncate oneline" style="width: 618px;">
					Java多线程核心技术(一):基础知识总结				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/B/8/A/3_supersnow0622.jpg" alt="supersnow0622" class="avatar-pic">
						<span class="namebox">
							<span class="name">supersnow0622</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">02-22</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						945</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/supersnow0622/article/details/56494682" target="_blank" title="Java多线程核心技术(一):基础知识总结">
						<span class="desc oneline">概念

进程:进程是操做系统结构的基础,是一次程序的执行,是一个程序及其数据在处理机上顺序执行时所发生的活动,是程序在一个程序集合上运行的过程,它是系统进行资源分配和调度的一个基本单位。
线程:线程是进…

来自: supersnow0622的专栏



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/lidaasky/article/details/8296785,BlogCommendFromBaidu_6,index_6&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/lidaasky/article/details/8296785" target="_blank" title="多线程基础">
			<h4 class="text-truncate oneline" style="width: 610px;">
					多线程基础				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/D/9/4/3_lidaasky.jpg" alt="lidaasky" class="avatar-pic">
						<span class="namebox">
							<span class="name">lidaasky</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">12-24</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						3090</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/lidaasky/article/details/8296785" target="_blank" title="多线程基础">
						<span class="desc oneline">借此次考试系统的机会,学习学习多线程技术,和以往的学习过程相同:在学习新知识以前,先去知道这些知识是什么、从何而来、用在哪里、优缺点是什么,这样能够为知识创建一个方向,不会学得迷了路。

多线程基础
 …

来自: 李达



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/aboy123/article/details/38307539,BlogCommendFromBaidu_7,index_7&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/aboy123/article/details/38307539" target="_blank" title="JAVA多线程实现的三种方式">
			<h4 class="text-truncate oneline" style="width: 600px;">
					JAVA多线程实现的三种方式				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/2/8/E/3_aboy123.jpg" alt="aboy123" class="avatar-pic">
						<span class="namebox">
							<span class="name">aboy123</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">07-31</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						48.8万</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/aboy123/article/details/38307539" target="_blank" title="JAVA多线程实现的三种方式">
						<span class="desc oneline">JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没...</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/aboy123">来自:	<span class="blog_title"> 步春良</span></a></span>
                    					</p>
		</div>
				</div>

<div class="recommend-item-box recommend-ad-box"><div id="kp_box_60" data-pid="60" data-track-view="{&quot;mod&quot;:&quot;kp_popu_60-43&quot;,&quot;con&quot;:&quot;,,&quot;}" data-track-click="{&quot;mod&quot;:&quot;kp_popu_60-43&quot;,&quot;con&quot;:&quot;,,&quot;}"><div class="mediav_ad"><newsfeed class="newsfeed QIHOO__WEB__SO__1544408381577_361" id="QIHOO__WEB__SO__1544408381577_361" style="display:block;margin:0;padding:0;border:none;width:900px;height:84px;overflow-y:hidden;overflow-x:hidden;position:relative;text-align:left;"><info-div id="QIHOO__WEB__SO__1544408381577_361-info" style="zoom:1"><info-div class="QIHOO__WEB__SO__1544408381577_361 singleImage clk" data-href="https://ssxd.mediav.com/s?type=2&amp;r=20&amp;mv_ref=blog.csdn.net&amp;enup=CAABdZG9tggAAra9kXUA&amp;mvid=NjMyNDM3MTUyMDcxMjIxMTgwNDAwMTg&amp;bid=12c5244f6ddf3053&amp;price=AAAAAFwNzT0AAAAAAAXyqyyVD0CPva3deOVBBA==&amp;finfo=DAABCAABAAAAVwgAAgAAAFgEAAM/QgQRV6Xw0wAIAAIAAAADCgADOdP35XjbR6MIAAQAAACgBgAGLbcIAAgADWfUCgAJAAAAAAACEJgGAAoAAAA&amp;ugi=FcTgigEVyNtrTBUCFeIEFewEFQAAFc+u+vIKFgQVyAEA&amp;uai=FeTGlAIlAhUEFqj5t6Sds/fTcxXyCCXvrtv0BSUAFRoA&amp;ubi=FbbGCBWCuYoCFczCixYVnO/6VRUEFSIWrNSm5gQWqPnMi6f5+9NzFrC63IsJFgAUAhawwhAlBhXhoP2GDhVqFQA2zt79nODvu/1DAA&amp;clickid=0&amp;cpx=__OFFSET_X__&amp;cpy=__OFFSET_Y__&amp;cs=__EVENT_TIME_START__&amp;ce=__EVENT_TIME_END__&amp;csign=5d73948e207dfdda&amp;csign2=GaJp0vm-5_1=&amp;url=http%3A%2F%2Fwww.czbut.com%2F" data-pv="https://ssxd.mediav.com/s?type=1&amp;r=20&amp;tid=OTdlOGM0YWZiZDgyMGFiZWYzNmZkZDg1MTliNDUwNWY&amp;finfo=DAABCAABAAAAVwgAAgAAAFgEAAM/QgQRV6Xw0wAIAAIAAAADCgADOdP35XjbR6MIAAQAAACgBgAGLbcIAAgADWfUCgAJAAAAAAACEJgGAAoAAAA&amp;mv_ref=blog.csdn.net&amp;enup=CAABdZG9tggAAra9kXUA&amp;mvid=NjMyNDM3MTUyMDcxMjIxMTgwNDAwMTg&amp;bid=12c5244f6ddf3053&amp;ugi=FcTgigEVyNtrTBUCFeIEFewEFQAAFc+u+vIKFgQVyAEA&amp;uai=FeTGlAIlAhUEFqj5t6Sds/fTcxXyCCXvrtv0BSUAFRoA&amp;ubi=FbbGCBWCuYoCFczCixYVnO/6VRUEFSIWrNSm5gQWqPnMi6f5+9NzFrC63IsJFgAUAhawwhAlBhXhoP2GDhVqFQA2zt79nODvu/1DAA&amp;ds=1&amp;price=AAAAAFwNzT0AAAAAAAXyqyyVD0CPva3deOVBBA==,https://max-l.mediav.com/rtb?type=2&amp;d=100&amp;b=12c5244f6ddf3053&amp;p=2265522&amp;l=1136674&amp;s=1&amp;z=1&amp;w=AAAAAFwNzT0AAAAAAAXyziRuzJu2nvg/17CPTA==&amp;k=6B3C6AAAAAA=&amp;i=IotrA121DA4u&amp;v=63243715207122118040018" data-clk="https://max-l.mediav.com/rtb?type=3&amp;d=100&amp;b=12c5244f6ddf3053&amp;p=2265522&amp;l=1136674&amp;s=1&amp;k=6B3C6AAAAAA=&amp;i=IotrA121DA4u&amp;v=63243715207122118040018&amp;x=__OFFSET_X__&amp;y=__OFFSET_Y__&amp;st=__EVENT_TIME_START__&amp;et=__EVENT_TIME_END__&amp;tc=&amp;turl=">
<info-div class="wrap">
    <info-div class="singleImage-img singleImage-img-left">
        <info-div class="img" style="background-image:url(https://s3m.mediav.com/galileo/70043-6734755d496bc52e37778341cf948b20.jpg)"><info-div class="ads-tag"></info-div></info-div>
    </info-div>
    <info-div class="singleImage-body singleImage-body-left">
        <info-div class="singleImage-title">各种自动化工装夹具的研发与制造</info-div>
        <info-div class="singleImage-desc">比优特  · 顶新</info-div>
    </info-div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/xiaoyuxianshenging/article/details/68989005,BlogCommendESEnWordWeight_8,index_8&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/xiaoyuxianshenging/article/details/68989005" target="_blank" title="利用多线程和TCP技术,实现客户端与服务端之间的通讯">
			<h4 class="text-truncate oneline" style="width: 610px;">
					利用多线程和TCP技术,实现客户端与服务端之间的通讯				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/F/E/C/3_xiaoyuxianshenging.jpg" alt="xiaoyuxianshenging" class="avatar-pic">
						<span class="namebox">
							<span class="name">xiaoyuxianshenging</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">04-03</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						1655</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/xiaoyuxianshenging/article/details/68989005" target="_blank" title="利用多线程和TCP技术,实现客户端与服务端之间的通讯">
						<span class="desc oneline">server.c

#include
#include
#include
#include
#include
#include
#include
#include
#include


来自: xiaoyuxianshenging的博客



<div class="recommend-item-box type_hot_word">
					<div class="content clearfix oneline" style="width: 702px;">
			<h5 class="float-left">文章热词</h5>
			<div class="word float-left">
												<span>
					<a href="https://edu.csdn.net/courses/o5329_s5330_k " target="_blank">
					机器学习					</a></span>
																<span>
					<a href="https://edu.csdn.net/courses/o5329_s5330_k " target="_blank">
					机器学习课程					</a></span>
																<span>
					<a href="https://edu.csdn.net/courses/o5329_s5330_k " target="_blank">
					机器学习教程					</a></span>
																<span>
					<a href="https://edu.csdn.net/combos/o5329_s5331_l0_t " target="_blank">
					深度学习视频教程					</a></span>
																<span>
					<a href="https://edu.csdn.net/combos/o5329_s5331_l0_t " target="_blank">
					深度学习学习					</a></span>
											</div>
		</div>
								<div class="content clearfix oneline" style="width: 702px;">
			<h5 class="float-left">相关热词</h5>
			<div class="float-left">
								<span>
					<a href="https://www.csdn.net/gather_25/Mtjacg3sMTctYmxvZwO0O0OO0O0O.html" target="_blank">
					c# 投屏</a>
				</span>
								<span>
					<a href="https://www.csdn.net/gather_2f/Mtjacg3sMjQtYmxvZwO0O0OO0O0O.html" target="_blank">
					c#好看的音乐控件</a>
				</span>
								<span>
					<a href="https://www.csdn.net/gather_2f/Mtjacg3sNDItYmxvZwO0O0OO0O0O.html" target="_blank">
					c# string 转码</a>
				</span>
								<span>
					<a href="https://www.csdn.net/gather_2a/Mtjacg3sNDMtYmxvZwO0O0OO0O0O.html" target="_blank">
					c# iis配置</a>
				</span>
								<span>
					<a href="https://www.csdn.net/gather_2f/Mtjacg3sNDctYmxvZwO0O0OO0O0O.html" target="_blank">
					c# com接口编程</a>
				</span>
								<span>
					<a href="https://www.csdn.net/gather_4a/MtSa1glsZHUO0O0O.html" target="_blank">
					python教程+chm</a>
				</span>
								<span>
					<a href="https://www.csdn.net/gather_4a/MtTaQgtsZWR1.html" target="_blank">
					python教程百家号</a>
				</span>
							</div>
		</div>
				</div>


		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/hongke123123/article/details/52766221,BlogCommendFromBaidu_9,index_9&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/hongke123123/article/details/52766221" target="_blank" title="CVI多线程数据保护(线程锁)">
			<h4 class="text-truncate oneline" style="width: 610px;">
					CVI多线程数据保护(线程锁)				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/0/8/1/3_hongke123123.jpg" alt="hongke123123" class="avatar-pic">
						<span class="namebox">
							<span class="name">hongke123123</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">10-09</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						1794</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/hongke123123/article/details/52766221" target="_blank" title="CVI多线程数据保护(线程锁)">
						<span class="desc oneline">两个线程操做全局变量,一个线程显示全局变量,主线程一直在打印************#include

#include
#include
int CVICALLBACK ThreadFunc…

来自: 思惟逆逝



<div class="recommend-item-box blog-expert-recommend-box" style="display: block;">
			<div class="d-flex">
				<div class="blog-expert-recommend">
					<div class="blog-expert">
						<div class="blog-expert-flexbox" data-track-view="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/hongke123123/article/details/53066690&quot;}"><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-track-click="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/hongke123123/article/details/53066690&quot;}"><a href="https://blog.csdn.net/hht729668375" target="_blank"><img src="https://avatar.csdn.net/A/7/1/3_hht729668375.jpg" alt="夨落旳尐孩" title="夨落旳尐孩"><svg class="icon" aria-hidden="true"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-blogexpert"></use></svg></a></div><div class="info"><span data-track-click="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/hongke123123/article/details/53066690&quot;}"><a href="https://blog.csdn.net/hht729668375" target="_blank"><h5 class="oneline" title="夨落旳尐孩">夨落旳尐孩</h5></a></span>  <p><span data-track-click="{&quot;mod&quot;:&quot;popu_710&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/hongke123123/article/details/53066690&quot;}"><span class="blog-expert-button-follow btn-red-follow" data-name="hht729668375" data-nick="夨落旳尐孩">关注</span></span><span class="article-num" title="319篇文章"> 319篇文章</span></p></div></div></div><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-track-click="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/hongke123123/article/details/53066690&quot;}"><a href="https://blog.csdn.net/czg13548930186" target="_blank"><img src="https://avatar.csdn.net/5/8/C/3_czg13548930186.jpg" alt="种瓜大爷" title="种瓜大爷"><svg class="icon" aria-hidden="true"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-blogexpert"></use></svg></a></div><div class="info"><span data-track-click="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/hongke123123/article/details/53066690&quot;}"><a href="https://blog.csdn.net/czg13548930186" target="_blank"><h5 class="oneline" title="种瓜大爷">种瓜大爷</h5></a></span>  <p><span data-track-click="{&quot;mod&quot;:&quot;popu_710&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/hongke123123/article/details/53066690&quot;}"><span class="blog-expert-button-follow btn-red-follow" data-name="czg13548930186" data-nick="种瓜大爷">关注</span></span><span class="article-num" title="314篇文章"> 314篇文章</span></p></div></div></div><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-track-click="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/hongke123123/article/details/53066690&quot;}"><a href="https://blog.csdn.net/qq_25827845" target="_blank"><img src="https://avatar.csdn.net/F/B/5/3_qq_25827845.jpg" alt="温柔狠角色" title="温柔狠角色"><svg class="icon" aria-hidden="true"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-blogexpert"></use></svg></a></div><div class="info"><span data-track-click="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/hongke123123/article/details/53066690&quot;}"><a href="https://blog.csdn.net/qq_25827845" target="_blank"><h5 class="oneline" title="温柔狠角色">温柔狠角色</h5></a></span>  <p><span data-track-click="{&quot;mod&quot;:&quot;popu_710&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/hongke123123/article/details/53066690&quot;}"><span class="blog-expert-button-follow btn-red-follow" data-name="qq_25827845" data-nick="温柔狠角色">关注</span></span><span class="article-num" title="272篇文章"> 272篇文章</span></p></div></div></div><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-track-click="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/hongke123123/article/details/53066690&quot;}"><a href="https://blog.csdn.net/Enrica_Shi" target="_blank"><img src="https://avatar.csdn.net/5/D/E/3_enrica_shi.jpg" alt="Enrica_Shi" title="Enrica_Shi"></a></div><div class="info"><span data-track-click="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/hongke123123/article/details/53066690&quot;}"><a href="https://blog.csdn.net/Enrica_Shi" target="_blank"><h5 class="oneline" title="Enrica_Shi">Enrica_Shi</h5></a></span>  <p><span data-track-click="{&quot;mod&quot;:&quot;popu_710&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/hongke123123/article/details/53066690&quot;}"><span class="blog-expert-button-follow btn-red-follow" data-name="Enrica_Shi" data-nick="Enrica_Shi">关注</span></span><span class="article-num" title="69篇文章"> 69篇文章</span></p></div></div></div></div>
					</div>
				</div>
			</div>
  </div>

		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/qq376430645/article/details/9673325,BlogCommendFromBaidu_10,index_10&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/qq376430645/article/details/9673325" target="_blank" title="线程技术">
			<h4 class="text-truncate oneline" style="width: 618px;">
					线程技术				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/4/0/C/3_qq376430645.jpg" alt="qq376430645" class="avatar-pic">
						<span class="namebox">
							<span class="name">qq376430645</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">07-31</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						815</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/qq376430645/article/details/9673325" target="_blank" title="线程技术">
						<span class="desc oneline">---------&nbsp;android培训、java培训、期待与您交流! ----------一、进程和线程进程是指一个内存中运行的应用程序,每一个进程都有本身独立的一块内存空间,一个进程中能够有多个线程。...</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/qq376430645">来自:	<span class="blog_title"> 梦亦无痕</span></a></span>
                    					</p>
		</div>
				</div>




		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/abcd5711664321/article/details/51114571,BlogCommendFromBaidu_11,index_11&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/abcd5711664321/article/details/51114571" target="_blank" title="多线程开发和Socket技术">
			<h4 class="text-truncate oneline" style="width: 610px;">
					多线程开发和Socket技术				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/0/8/C/3_abcd5711664321.jpg" alt="abcd5711664321" class="avatar-pic">
						<span class="namebox">
							<span class="name">abcd5711664321</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">04-10</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						2494</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/abcd5711664321/article/details/51114571" target="_blank" title="多线程开发和Socket技术">
						<span class="desc oneline">1、进程和线程

进程:每一个应用程序对应一个进程;
线程:一个进程至少包含一个线程,线程要和CPU进行交互。
 
多线程并发(能够理解为):"同一时间"执行多件事情,如程序一边执行,一边计数(计…

来自: abcd5711664321的博客



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/DLUTBruceZhang/article/details/8580564,BlogCommendFromBaidu_12,index_12&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/DLUTBruceZhang/article/details/8580564" target="_blank" title="Android 开发中的多线程编程技术">
			<h4 class="text-truncate oneline" style="width: 610px;">
					Android 开发中的多线程编程技术				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/4/9/E/3_dlutbrucezhang.jpg" alt="DLUTBruceZhang" class="avatar-pic">
						<span class="namebox">
							<span class="name">DLUTBruceZhang</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">02-14</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						1893</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/DLUTBruceZhang/article/details/8580564" target="_blank" title="Android 开发中的多线程编程技术">
						<span class="desc oneline">此文章来自“Intel Software”应用开发

多线程这个使人生畏的“洪水猛兽”,不少人谈起多线程都心存畏惧。在Android开发过程当中,多线程真的很难吗?多线程程序的“麻烦”源于它很抽象、…

来自: 张勤一



<div class="recommend-item-box recommend-ad-box"><div id="kp_box_61" data-pid="61" data-track-view="{&quot;mod&quot;:&quot;kp_popu_61-557&quot;,&quot;con&quot;:&quot;,,&quot;}" data-track-click="{&quot;mod&quot;:&quot;kp_popu_61-557&quot;,&quot;con&quot;:&quot;,,&quot;}"><div class="mediav_ad"><newsfeed class="newsfeed QIHOO__WEB__SO__1544408381616_546" id="QIHOO__WEB__SO__1544408381616_546" style="display:block;margin:0;padding:0;border:none;width:852px;height:60px;overflow-y:hidden;overflow-x:hidden;position:relative;text-align:left;"><info-div id="QIHOO__WEB__SO__1544408381616_546-info" style="zoom:1"><info-div class="QIHOO__WEB__SO__1544408381616_546 singleImage clk" data-href="https://s1.milkjpg.com/s?type=2&amp;r=20&amp;mv_ref=blog.csdn.net&amp;enup=CAABdZG9tggAAra9kXUA&amp;mvid=NjMyNDM3MTUyMDcxMjIxMTgwNDAwMTg&amp;bid=12c5244f6872987e&amp;price=AAAAAFwNzT0AAAAAAAS7pM6oOOMRZ4HVle7S8Q==&amp;finfo=DAABCAABAAAAgQgAAgAAAH0EAAM/UGMY1r0wHgAIAAIAAAADCgADLPTlv8IFVSoIAAQAAACCBgAGHgMIAAgAE9JnCgAJAAAAAAACEJQGAAoAAAA&amp;ugi=FcTgigEVyNtrTBUCFeIEFewEFQAAFc+u+vIKFgQVyAEA&amp;uai=FaixkwIlAhUEFqj55rjn4+n0WRXyCCXXqIyBBiUAFRoA&amp;ubi=FZ60RhX0k7ICFcqXwhYVoIjVVhUGFRwWnJHy0RYWqPmQh/vv8vRZNAQWqMKQgAglBhXV67LaBBXCAxUANumC7Jy36seMVQA&amp;clickid=0&amp;cpx=__OFFSET_X__&amp;cpy=__OFFSET_Y__&amp;cs=__EVENT_TIME_START__&amp;ce=__EVENT_TIME_END__&amp;csign=11297f932bd632b0&amp;csign2=xFKXlsCH2lZ=&amp;url=http%3A%2F%2Fvip6.sxzctec114.cn%2F" data-pv="https://s1.milkjpg.com/s?type=1&amp;r=20&amp;tid=OTdlOGM0YWZiZDgyMGFiZWYzNmZkZDg1MTliNDUwNWY&amp;finfo=DAABCAABAAAAgQgAAgAAAH0EAAM/UGMY1r0wHgAIAAIAAAADCgADLPTlv8IFVSoIAAQAAACCBgAGHgMIAAgAE9JnCgAJAAAAAAACEJQGAAoAAAA&amp;mv_ref=blog.csdn.net&amp;enup=CAABdZG9tggAAra9kXUA&amp;mvid=NjMyNDM3MTUyMDcxMjIxMTgwNDAwMTg&amp;bid=12c5244f6872987e&amp;ugi=FcTgigEVyNtrTBUCFeIEFewEFQAAFc+u+vIKFgQVyAEA&amp;uai=FaixkwIlAhUEFqj55rjn4+n0WRXyCCXXqIyBBiUAFRoA&amp;ubi=FZ60RhX0k7ICFcqXwhYVoIjVVhUGFRwWnJHy0RYWqPmQh/vv8vRZNAQWqMKQgAglBhXV67LaBBXCAxUANumC7Jy36seMVQA&amp;ds=2&amp;price=AAAAAFwNzT0AAAAAAAS7pM6oOOMRZ4HVle7S8Q==,https://max-l.mediav.com/rtb?type=2&amp;d=100&amp;b=12c5244f6872987e&amp;p=2255956&amp;l=1136674&amp;s=2&amp;z=1&amp;w=AAAAAFwNzT0AAAAAAAS7zIy41f+mZmY0HOcnZQ==&amp;k=pBWbOQAAAAA=&amp;i=OkpN8I21DA4x&amp;v=63243715207122118040018" data-clk="https://max-l.mediav.com/rtb?type=3&amp;d=100&amp;b=12c5244f6872987e&amp;p=2255956&amp;l=1136674&amp;s=2&amp;k=pBWbOQAAAAA=&amp;i=OkpN8I21DA4x&amp;v=63243715207122118040018&amp;x=__OFFSET_X__&amp;y=__OFFSET_Y__&amp;st=__EVENT_TIME_START__&amp;et=__EVENT_TIME_END__&amp;tc=&amp;turl=">
<info-div class="wrap">
    <info-div class="singleImage-img singleImage-img-left">
        <info-div class="img" style="background-image:url(https://s3m.mediav.com/galileo/576783-90a2ce460aa74f9e49ac3505957e1559.jpg)"><info-div class="ads-tag"></info-div></info-div>
    </info-div>
    <info-div class="singleImage-body singleImage-body-left">
        <info-div class="singleImage-title">本地一位炒股大爷酒后吐真言:炒股20年坚持只看一指标</info-div>
        <info-div class="singleImage-desc">陕西信息科技 · 燨燚</info-div>
    </info-div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/wangjiwei2010/article/details/1265622,BlogCommendFromBaidu_13,index_13&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/wangjiwei2010/article/details/1265622" target="_blank" title="多线程编程技术开发资料">
			<h4 class="text-truncate oneline" style="width: 610px;">
					多线程编程技术开发资料				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/F/6/C/3_wangjiwei2010.jpg" alt="wangjiwei2010" class="avatar-pic">
						<span class="namebox">
							<span class="name">wangjiwei2010</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">09-22</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						6610</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/wangjiwei2010/article/details/1265622" target="_blank" title="多线程编程技术开发资料">
						<span class="desc oneline">多线程编程技术开发资料&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 目录Win32 多线程的性能(1)... 1Win32 多线程的性能(2)... 10关于多线程的一些细节... 23用VC+...</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/wangjiwei2010">来自:	<span class="blog_title"> 饿的神啊</span></a></span>
                    					</p>
		</div>
				</div>




		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/qi_ming88/article/details/79947632,searchFromBaidu_14,index_14&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/qi_ming88/article/details/79947632" target="_blank" title="线程的基本概念、基本状态——多线程技术一">
			<h4 class="text-truncate oneline" style="width: 626px;">
					线程的基本概念、基本状态——<em>多线程技术</em>一				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/4/9/F/3_qi_ming88.jpg" alt="qi_ming88" class="avatar-pic">
						<span class="namebox">
							<span class="name">qi_ming88</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">04-15</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						79</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/qi_ming88/article/details/79947632" target="_blank" title="线程的基本概念、基本状态——多线程技术一">
						<span class="desc oneline">多线程技术在实际开发中运用的比较多,可是也是比较难的一部分,若是可以熟练掌握,那你的薪资确定是高的不行。基本概念:线程就像一条要执行的线索,单线程就像只有一个在作事,多线程就像不少人在作事(不少人同时...</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/qi_ming88">来自:	<span class="blog_title"> qi_ming88的博客</span></a></span>
                    					</p>
		</div>
				</div>




		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/weixin_41263632/article/details/82977097,searchFromBaidu_15,index_15&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/weixin_41263632/article/details/82977097" target="_blank" title="多线程技术讲解---持续更新">
			<h4 class="text-truncate oneline" style="width: 626px;">
					<em>多线程技术</em>讲解---持续更新				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/5/0/2/3_weixin_41263632.jpg" alt="weixin_41263632" class="avatar-pic">
						<span class="namebox">
							<span class="name">weixin_41263632</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">10-09</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						29</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/weixin_41263632/article/details/82977097" target="_blank" title="多线程技术讲解---持续更新">
						<span class="desc oneline">多线程技术讲解

传统线程技术的回顾

  1. 多线程的建立(两种)

经过建立线程对象,复写run(),经过start()调用该线程。

本质是继承

Thread thread =…

来自: weixin_41263632的博客



<div class="recommend-item-box recommend-box-ident" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://download.csdn.net/download/ys8888n/10397200,searchFromBaidu_16,index_16&quot;}" data-flg="true">
	<a href="https://download.csdn.net/download/ys8888n/10397200" target="_blank">
		<h4 class="text-truncate oneline" style="width: 565px;">
				java多线程核心技术_完整版			</h4>
		<div class="info-box d-flex align-content-center">
			<p>
								<span class="read-num">下载</span>
							</p>
			<p>
				<span class="date">05-07</span>
			</p>
		</div>
		<p class="content oneline" style="width: 702px;">
				1. 如题, java 多线程技术研发必备 2. 带清晰完整的目录结构,可直接跳转 3. 文档内容清晰完整,非扫描			</p>
	</a>

</div>




		<div class="recommend-item-box recommend-box-ident" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://download.csdn.net/download/ddxshf/10810677,searchFromBaidu_17,index_17&quot;}" data-flg="true">
	<a href="https://download.csdn.net/download/ddxshf/10810677" target="_blank">
		<h4 class="text-truncate oneline" style="width: 567px;">
				Java多线程核心技术讲解			</h4>
		<div class="info-box d-flex align-content-center">
			<p>
								<span class="read-num">下载</span>
							</p>
			<p>
				<span class="date">11-27</span>
			</p>
		</div>
		<p class="content oneline" style="width: 702px;">
				Java多线程核心技术:理解多线程、在Java中实现多线程、线程的生命周期、线程的优先级、线程的同步、线程的阻塞、守护线程、线程组、线程池、总结。			</p>
	</a>

</div>

<div class="recommend-item-box recommend-ad-box"><div id="kp_box_62" data-pid="62" data-track-view="{&quot;mod&quot;:&quot;kp_popu_62-556&quot;,&quot;con&quot;:&quot;,,&quot;}" data-track-click="{&quot;mod&quot;:&quot;kp_popu_62-556&quot;,&quot;con&quot;:&quot;,,&quot;}"><div class="mediav_ad"><newsfeed class="newsfeed QIHOO__WEB__SO__1544408381647_633" id="QIHOO__WEB__SO__1544408381647_633" style="display:block;margin:0;padding:0;border:none;width:852px;height:60px;overflow-y:hidden;overflow-x:hidden;position:relative;text-align:left;"><info-div id="QIHOO__WEB__SO__1544408381647_633-info" style="zoom:1"><info-div class="QIHOO__WEB__SO__1544408381647_633 singleImage clk" data-href="https://s1.milkjpg.com/s?type=2&amp;r=20&amp;mv_ref=blog.csdn.net&amp;enup=CAABdZG9tggAAra9kXUA&amp;mvid=NjMyNDM3MTUyMDcxMjIxMTgwNDAwMTg&amp;bid=12c5244f6ddf3053&amp;price=AAAAAFwNzT0AAAAAAAXzHRUZb2uCocaHA3nIGA==&amp;finfo=DAABCAABAAAANQgAAgAAAHUEAAM/PZ0gRoMsRAAIAAIAAAADCgADOdQA/ZmUr6AIAAQAAAB1BgAGLbcIAAgACBZQCgAJAAAAAAACEJgGAAoAAAYADDo9AA&amp;ugi=FcTgigEVyNtrTBUCFeIEFewEFQAAFc+u+vIKFgQVyAEA&amp;uai=FeTGlAIlAhUEFqj5t6Sds/fTcxXyCCXvrtv0BSUAFRoA&amp;ubi=FfitShX6ub4CFYDzgBcV9JDbVxUEFRwW3qTRgxcWqPnh8rC/gNRzNAQWsMKQgAglBhXn+NHVDhW+BRUANqDkjuXE+eP+7QEA&amp;clickid=0&amp;cpx=__OFFSET_X__&amp;cpy=__OFFSET_Y__&amp;cs=__EVENT_TIME_START__&amp;ce=__EVENT_TIME_END__&amp;csign=ae758a17b72085a1&amp;csign2=QzWflBYie8G=&amp;url=http%3A%2F%2Fxdingding.top" data-pv="https://s1.milkjpg.com/s?type=1&amp;r=20&amp;tid=OTdlOGM0YWZiZDgyMGFiZWYzNmZkZDg1MTliNDUwNWY&amp;finfo=DAABCAABAAAANQgAAgAAAHUEAAM/PZ0gRoMsRAAIAAIAAAADCgADOdQA/ZmUr6AIAAQAAAB1BgAGLbcIAAgACBZQCgAJAAAAAAACEJgGAAoAAAYADDo9AA&amp;mv_ref=blog.csdn.net&amp;enup=CAABdZG9tggAAra9kXUA&amp;mvid=NjMyNDM3MTUyMDcxMjIxMTgwNDAwMTg&amp;bid=12c5244f6ddf3053&amp;ugi=FcTgigEVyNtrTBUCFeIEFewEFQAAFc+u+vIKFgQVyAEA&amp;uai=FeTGlAIlAhUEFqj5t6Sds/fTcxXyCCXvrtv0BSUAFRoA&amp;ubi=FfitShX6ub4CFYDzgBcV9JDbVxUEFRwW3qTRgxcWqPnh8rC/gNRzNAQWsMKQgAglBhXn+NHVDhW+BRUANqDkjuXE+eP+7QEA&amp;ds=2&amp;price=AAAAAFwNzT0AAAAAAAXzHRUZb2uCocaHA3nIGA==,https://max-l.mediav.com/rtb?type=2&amp;d=100&amp;b=12c5244f6ddf3053&amp;p=2265522&amp;l=1136674&amp;s=2&amp;z=1&amp;w=AAAAAFwNzT0AAAAAAAXzOjnjOuiYumv15aOC6w==&amp;k=6B3C6AAAAAA=&amp;i=IoTrA121DA4x&amp;v=63243715207122118040018" data-clk="https://max-l.mediav.com/rtb?type=3&amp;d=100&amp;b=12c5244f6ddf3053&amp;p=2265522&amp;l=1136674&amp;s=2&amp;k=6B3C6AAAAAA=&amp;i=IoTrA121DA4x&amp;v=63243715207122118040018&amp;x=__OFFSET_X__&amp;y=__OFFSET_Y__&amp;st=__EVENT_TIME_START__&amp;et=__EVENT_TIME_END__&amp;tc=&amp;turl=">
<info-div class="wrap">
    <info-div class="singleImage-img singleImage-img-left">
        <info-div class="img" style="background-image:url(https://s3m.mediav.com/galileo/609148-9676d03a958fcf030a4306c2a9686c0a.jpg)"><info-div class="ads-tag"></info-div></info-div>
    </info-div>
    <info-div class="singleImage-body singleImage-body-left">
        <info-div class="singleImage-title">克拉玛依股王凭20年资深股经探得1定律分析法,赢数千万身家!</info-div>
        <info-div class="singleImage-desc">意欧迅网络 · 燨燚</info-div>
    </info-div>
<div class="recommend-item-box recommend-box-ident" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://download.csdn.net/download/wxg630/9910285,searchFromBaidu_18,index_18&quot;}" data-flg="true">
	<a href="https://download.csdn.net/download/wxg630/9910285" target="_blank">
		<h4 class="text-truncate oneline" style="width: 565px;">
				多线程核心技术			</h4>
		<div class="info-box d-flex align-content-center">
			<p>
								<span class="read-num">下载</span>
							</p>
			<p>
				<span class="date">07-25</span>
			</p>
		</div>
		<p class="content oneline" style="width: 702px;">
				java多线程编程核心技术			</p>
	</a>

</div>




		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/Enrica_Shi/article/details/78047338,BlogCommendFromQuerySearch_19,index_19&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/Enrica_Shi/article/details/78047338" target="_blank" title="多线程技术的综合应用">
			<h4 class="text-truncate oneline" style="width: 618px;">
					<em>多线程技术</em>的综合应用				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/5/D/E/3_enrica_shi.jpg" alt="Enrica_Shi" class="avatar-pic">
						<span class="namebox">
							<span class="name">Enrica_Shi</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">09-21</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						139</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/Enrica_Shi/article/details/78047338" target="_blank" title="多线程技术的综合应用">
						<span class="desc oneline">在前面的笔记中,咱们整理了和多线程相关的一些基础知识,下面经过一个实例来作一个综合演练。咱们都见过下面这种界面:

多图下载.jpg

首先,它是一个tableView,联网之后获取cell上面的…

来自: Enrica_Shi的博客



<div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://download.csdn.net/download/qq_24528803/8262151,BlogCommendFromQuerySearch_20,index_20&quot;}" data-flg="true">
		<a href="https://download.csdn.net/download/qq_24528803/8262151" target="_blank">
			<div class="content">
				<div class="">
					<span class="type">下载</span>
					<h4 class="text-truncate oneline clearfix">
						英特尔多核-<em>多线程技术</em>						</h4>
					<span class="data float-right">12-15</span>
				</div>
				<div class="desc oneline">
						英特尔多核-多线程技术,适于服务器编写,不错的资料!					</div>
			</div>
		</a>
	</div>




		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/shfqbluestone/article/details/45825269,BlogCommendFromQuerySearch_21,index_21&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/shfqbluestone/article/details/45825269" target="_blank" title="多线程的优点">
			<h4 class="text-truncate oneline" style="width: 610px;">
					多线程的优点				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/B/0/8/3_shfqbluestone.jpg" alt="shfqbluestone" class="avatar-pic">
						<span class="namebox">
							<span class="name">shfqbluestone</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">05-18</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						1401</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/shfqbluestone/article/details/45825269" target="_blank" title="多线程的优点">
						<span class="desc oneline">尽管多线程编程颇有挑战,但它也有本身的优点,因此仍然使用多线程技术。下面是多线程的一些优点:

更好的资源利用率
在某些状况下能简化程序设计
高响应程序
更好的资源利用率假设一个应用程序在本地文件系统中…



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/miachen520/article/details/77206484,BlogCommendFromQuerySearch_22,index_22&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/miachen520/article/details/77206484" target="_blank" title="利用多线程写一个卖票程序">
			<h4 class="text-truncate oneline" style="width: 618px;">
					利用多线程写一个卖票程序				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/C/B/4/3_miachen520.jpg" alt="miachen520" class="avatar-pic">
						<span class="namebox">
							<span class="name">miachen520</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">08-16</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						284</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/miachen520/article/details/77206484" target="_blank" title="利用多线程写一个卖票程序">
						<span class="desc oneline">package com.mischen.cn;

public class Demo2 {

public static void main(String[] args) {
SaleTicket...</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/miachen520">来自:	<span class="blog_title"> mischen520的博客</span></a></span>
                    					</p>
		</div>
				</div>

<div class="recommend-item-box recommend-ad-box"><div id="kp_box_63" data-pid="63" data-track-view="{&quot;mod&quot;:&quot;kp_popu_63-555&quot;,&quot;con&quot;:&quot;,,&quot;}" data-track-click="{&quot;mod&quot;:&quot;kp_popu_63-555&quot;,&quot;con&quot;:&quot;,,&quot;}"><div class="mediav_ad"><newsfeed class="newsfeed QIHOO__WEB__SO__1544408381677_977" id="QIHOO__WEB__SO__1544408381677_977" style="display:block;margin:0;padding:0;border:none;width:852px;height:60px;overflow-y:hidden;overflow-x:hidden;position:relative;text-align:left;"><info-div id="QIHOO__WEB__SO__1544408381677_977-info" style="zoom:1"><info-div class="QIHOO__WEB__SO__1544408381677_977 singleImage clk" data-href="https://s1.milkjpg.com/s?type=2&amp;r=20&amp;mv_ref=blog.csdn.net&amp;enup=CAABdZG9tggAAra9kXUA&amp;mvid=NjMyNDM3MTUyMDcxMjIxMTgwNDAwMTg&amp;bid=12c5244f6872987e&amp;price=AAAAAFwNzT0AAAAAAAS8INKl2BD4KzwzS4zNQQ==&amp;finfo=DAABCAABAAAAdggAAgAAAE0EAAM/WQp3LuI/qgAIAAIAAAADCgADLPTu2CzgAV4IAAQAAABNBgAGLbcIAAgAEgFgCgAJAAAAAAACEJQGAAoAAAYADDo9AA&amp;ugi=FcTgigEVyNtrTBUCFeIEFewEFQAAFc+u+vIKFgQVyAEA&amp;uai=FaixkwIlAhUEFqj55rjn4+n0WRXyCCXXqIyBBiUAFRoA&amp;ubi=FcjQSxX2or0CFbLc+hYV1OPVVxUEFRwWyIuAiBcWqPml7oS29/RZNAYWqMKQgAglBhXjjZTPBhXcAxUANqSRmL/OmKafdQA&amp;clickid=0&amp;cpx=__OFFSET_X__&amp;cpy=__OFFSET_Y__&amp;cs=__EVENT_TIME_START__&amp;ce=__EVENT_TIME_END__&amp;csign=ae758a17b72085a1&amp;csign2=QzWflBYie8G=&amp;url=http%3A%2F%2Fwww.zs090.top%2F" data-pv="https://s1.milkjpg.com/s?type=1&amp;r=20&amp;tid=OTdlOGM0YWZiZDgyMGFiZWYzNmZkZDg1MTliNDUwNWY&amp;finfo=DAABCAABAAAAdggAAgAAAE0EAAM/WQp3LuI/qgAIAAIAAAADCgADLPTu2CzgAV4IAAQAAABNBgAGLbcIAAgAEgFgCgAJAAAAAAACEJQGAAoAAAYADDo9AA&amp;mv_ref=blog.csdn.net&amp;enup=CAABdZG9tggAAra9kXUA&amp;mvid=NjMyNDM3MTUyMDcxMjIxMTgwNDAwMTg&amp;bid=12c5244f6872987e&amp;ugi=FcTgigEVyNtrTBUCFeIEFewEFQAAFc+u+vIKFgQVyAEA&amp;uai=FaixkwIlAhUEFqj55rjn4+n0WRXyCCXXqIyBBiUAFRoA&amp;ubi=FcjQSxX2or0CFbLc+hYV1OPVVxUEFRwWyIuAiBcWqPml7oS29/RZNAYWqMKQgAglBhXjjZTPBhXcAxUANqSRmL/OmKafdQA&amp;ds=3&amp;price=AAAAAFwNzT0AAAAAAAS8INKl2BD4KzwzS4zNQQ==,https://max-l.mediav.com/rtb?type=2&amp;d=100&amp;b=12c5244f6872987e&amp;p=2255956&amp;l=1136674&amp;s=3&amp;z=1&amp;w=AAAAAFwNzT0AAAAAAAS8PH0l1AuIGzX3x2QPPQ==&amp;k=pBWbOQAAAAA=&amp;i=OxTN8I21DACC&amp;v=63243715207122118040018" data-clk="https://max-l.mediav.com/rtb?type=3&amp;d=100&amp;b=12c5244f6872987e&amp;p=2255956&amp;l=1136674&amp;s=3&amp;k=pBWbOQAAAAA=&amp;i=OxTN8I21DACC&amp;v=63243715207122118040018&amp;x=__OFFSET_X__&amp;y=__OFFSET_Y__&amp;st=__EVENT_TIME_START__&amp;et=__EVENT_TIME_END__&amp;tc=&amp;turl=">
<info-div class="wrap">
    <info-div class="singleImage-img singleImage-img-left">
        <info-div class="img" style="background-image:url(https://s3m.mediav.com/galileo/619556-ea519e24f6f181ee1fd29d140f9263e9.png)"><info-div class="ads-tag"></info-div></info-div>
    </info-div>
    <info-div class="singleImage-body singleImage-body-left">
        <info-div class="singleImage-title">不停抽插,就是不想射有多爽! 老中医说:多吃他就能够作到!</info-div>
        <info-div class="singleImage-desc">通聚商贸 · 燨燚</info-div>
    </info-div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/u014248897/article/details/76039725,BlogCommendFromQuerySearch_23,index_23&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/u014248897/article/details/76039725" target="_blank" title="使用Java实现多线程下载断点续传功能案例">
			<h4 class="text-truncate oneline" style="width: 618px;">
					使用Java实现多线程下载断点续传功能案例				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/7/E/C/3_u014248897.jpg" alt="u014248897" class="avatar-pic">
						<span class="namebox">
							<span class="name">u014248897</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">07-25</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						546</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/u014248897/article/details/76039725" target="_blank" title="使用Java实现多线程下载断点续传功能案例">
						<span class="desc oneline">Java实现多线程下载断点续传功能案例 &nbsp; 2017年7月25日00:11:06

package com.itheima.download;

import java.io…

来自: 想一想挺简单的博客



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/jspamd/article/details/5262894,BlogCommendFromBaidu_24,index_24&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/jspamd/article/details/5262894" target="_blank" title="多线程的几种实现方法详解">
			<h4 class="text-truncate oneline" style="width: 608px;">
					多线程的几种实现方法详解				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/4/0/0/3_jspamd.jpg" alt="jspamd" class="avatar-pic">
						<span class="namebox">
							<span class="name">jspamd</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">01-27</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						7.2万</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/jspamd/article/details/5262894" target="_blank" title="多线程的几种实现方法详解">
						<span class="desc oneline">随着计算机技术的发展,编程模型也愈来愈复杂多样化。但多线程编程模型是目前计算机系统架构的最终模型。随着CPU主频的不断攀升,X86架构的硬件已经成为瓶,在这种架构的CPU主频最高为4G。事实上目前3....</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/jspamd">来自:	<span class="blog_title"> jspamd的专栏</span></a></span>
                    					</p>
		</div>
				</div>




		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/macky0668/article/details/3159487,BlogCommendFromBaidu_25,index_25&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/macky0668/article/details/3159487" target="_blank" title="多线程编程技术 ">
			<h4 class="text-truncate oneline" style="width: 610px;">
					多线程编程技术 				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/1/9/2/3_macky0668.jpg" alt="macky0668" class="avatar-pic">
						<span class="namebox">
							<span class="name">macky0668</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">10-27</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						9032</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/macky0668/article/details/3159487" target="_blank" title="多线程编程技术 ">
						<span class="desc oneline">&nbsp;转自:http://blog.csdn.net/fengzhihua_395/archive/2008/01/10/2033814.aspx多线程编程技术 线程是比进程更小的单位,能够认为进程是由一...</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/macky0668">来自:	<span class="blog_title"> 风之子的专栏</span></a></span>
                    					</p>
		</div>
				</div>




		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/u014305097/article/details/34433783,BlogCommendFromBaidu_26,index_26&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/u014305097/article/details/34433783" target="_blank" title="多线程的使用:优缺点">
			<h4 class="text-truncate oneline" style="width: 610px;">
					多线程的使用:优缺点				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/8/5/4/3_u014305097.jpg" alt="u014305097" class="avatar-pic">
						<span class="namebox">
							<span class="name">u014305097</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">06-25</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						8080</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/u014305097/article/details/34433783" target="_blank" title="多线程的使用:优缺点">
						<span class="desc oneline">最近手上拿到一个程序,其中是</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/u014305097">来自:	<span class="blog_title"> u014305097的专栏</span></a></span>
                    					</p>
		</div>
				</div>




		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/m0_37051593/article/details/80719469,BlogCommendFromBaidu_27,index_27&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/m0_37051593/article/details/80719469" target="_blank" title="linux多线程编程实例及讲解">
			<h4 class="text-truncate oneline" style="width: 611px;">
					linux多线程编程实例及讲解				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/5/9/A/3_m0_37051593.jpg" alt="m0_37051593" class="avatar-pic">
						<span class="namebox">
							<span class="name">m0_37051593</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">06-17</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						1151</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/m0_37051593/article/details/80719469" target="_blank" title="linux多线程编程实例及讲解">
						<span class="desc oneline">前言线程?为何有了进程还须要线程呢,他们有什么区别?使用线程有什么优点呢?还有多线程编程的一些细节问题,如线程之间怎样同步、互斥,这些东西将在本文中介绍。我在某QQ群里见到这样一道面试题:是否熟悉P...</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/m0_37051593">来自:	<span class="blog_title"> m0_37051593的博客</span></a></span>
                    					</p>
		</div>
				</div>

<div class="recommend-item-box recommend-ad-box"><div id="kp_box_64" data-pid="64" data-track-view="{&quot;mod&quot;:&quot;kp_popu_64-81&quot;,&quot;con&quot;:&quot;,,&quot;}" data-track-click="{&quot;mod&quot;:&quot;kp_popu_64-81&quot;,&quot;con&quot;:&quot;,,&quot;}"><div class="mediav_ad"><newsfeed class="newsfeed QIHOO__WEB__SO__1544408381712_146" id="QIHOO__WEB__SO__1544408381712_146" style="display:block;margin:0;padding:0;border:none;width:852px;height:60px;overflow-y:hidden;overflow-x:hidden;position:relative;text-align:left;"><info-div id="QIHOO__WEB__SO__1544408381712_146-info" style="zoom:1"><info-div class="QIHOO__WEB__SO__1544408381712_146 singleImage clk" data-href="https://s1.milkjpg.com/s?type=2&amp;r=20&amp;mv_ref=blog.csdn.net&amp;enup=CAABdZG9tggAAra9kXUA&amp;mvid=NjMyNDM3MTUyMDcxMjIxMTgwNDAwMTg&amp;bid=12c5244f6ddf3053&amp;price=AAAAAFwNzT0AAAAAAAXzgAd1JBRj5PAKiHtnzQ==&amp;finfo=DAABCAABAAAANQgAAgAAAGgEAAM/QEW3dz/BDAAIAAIAAAADCgADOfeRCFvnT6AIAAQAAABqBgAGLbcIAAgACBZQCgAJAAAAAAACEJgGAAoAAAA&amp;ugi=FcTgigEVyNtrTBUCFeIEFewEFQAAFc+u+vIKFgQVyAEA&amp;uai=FeTGlAIlAhUEFqj5t6Sds/fTcxXyCCXvrtv0BSUAFRoA&amp;ubi=FYihRxXAoKoCFZbfmhYV0NuTVhUEFRwWntnT9BYWqPn+1YjCyPdzNAYWsMKQgAglBhWp0d7sCRW+BRUANvOH5/n1+PDrPwA&amp;clickid=0&amp;cpx=__OFFSET_X__&amp;cpy=__OFFSET_Y__&amp;cs=__EVENT_TIME_START__&amp;ce=__EVENT_TIME_END__&amp;csign=a9bd87ce0ab5d2ea&amp;csign2=p0JDynW2qi6=&amp;url=http%3A%2F%2Fzz.c0523.cn" data-pv="https://s1.milkjpg.com/s?type=1&amp;r=20&amp;tid=OTdlOGM0YWZiZDgyMGFiZWYzNmZkZDg1MTliNDUwNWY&amp;finfo=DAABCAABAAAANQgAAgAAAGgEAAM/QEW3dz/BDAAIAAIAAAADCgADOfeRCFvnT6AIAAQAAABqBgAGLbcIAAgACBZQCgAJAAAAAAACEJgGAAoAAAA&amp;mv_ref=blog.csdn.net&amp;enup=CAABdZG9tggAAra9kXUA&amp;mvid=NjMyNDM3MTUyMDcxMjIxMTgwNDAwMTg&amp;bid=12c5244f6ddf3053&amp;ugi=FcTgigEVyNtrTBUCFeIEFewEFQAAFc+u+vIKFgQVyAEA&amp;uai=FeTGlAIlAhUEFqj5t6Sds/fTcxXyCCXvrtv0BSUAFRoA&amp;ubi=FYihRxXAoKoCFZbfmhYV0NuTVhUEFRwWntnT9BYWqPn+1YjCyPdzNAYWsMKQgAglBhWp0d7sCRW+BRUANvOH5/n1+PDrPwA&amp;ds=3&amp;price=AAAAAFwNzT0AAAAAAAXzgAd1JBRj5PAKiHtnzQ==,https://max-l.mediav.com/rtb?type=2&amp;d=100&amp;b=12c5244f6ddf3053&amp;p=2265522&amp;l=1136674&amp;s=3&amp;z=1&amp;w=AAAAAFwNzT0AAAAAAAXznMY9S+ZL2JfVjbbyXw==&amp;k=6B3C6AAAAAA=&amp;i=IoprA121DA46&amp;v=63243715207122118040018" data-clk="https://max-l.mediav.com/rtb?type=3&amp;d=100&amp;b=12c5244f6ddf3053&amp;p=2265522&amp;l=1136674&amp;s=3&amp;k=6B3C6AAAAAA=&amp;i=IoprA121DA46&amp;v=63243715207122118040018&amp;x=__OFFSET_X__&amp;y=__OFFSET_Y__&amp;st=__EVENT_TIME_START__&amp;et=__EVENT_TIME_END__&amp;tc=&amp;turl=">
<info-div class="wrap">
    <info-div class="singleImage-img singleImage-img-left">
        <info-div class="img" style="background-image:url(https://s3m.mediav.com/galileo/583748-5b538c3b4f107065c860088ccdf7c341.jpg)"><info-div class="ads-tag"></info-div></info-div>
    </info-div>
    <info-div class="singleImage-body singleImage-body-left">
        <info-div class="singleImage-title">克拉玛依竟有一位51岁股市奇才,炒股2年靠1个铁律,存款惊哭老婆</info-div>
        <info-div class="singleImage-desc">潮望 · 燨燚</info-div>
    </info-div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/csx66406602/article/details/54646081,BlogCommendFromBaidu_28,index_28&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/csx66406602/article/details/54646081" target="_blank" title="C++多线程编程(入门实例)">
			<h4 class="text-truncate oneline" style="width: 610px;">
					C++多线程编程(入门实例)				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/E/8/5/3_csx66406602.jpg" alt="csx66406602" class="avatar-pic">
						<span class="namebox">
							<span class="name">csx66406602</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">01-21</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						2066</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/csx66406602/article/details/54646081" target="_blank" title="C++多线程编程(入门实例)">
						<span class="desc oneline">多线程在编程中有至关重要的地位,咱们在实际开发时或者找工做面试时总能遇到多线程的问题,对多线程的理解程度从一个侧面反映了程序员的编程水平。

其实C++语言自己并无提供多线程机制(固然目前C++ …

来自: csx66406602的博客



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/sharemyfree/article/details/47316319,BlogCommendFromBaidu_29,index_29&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/sharemyfree/article/details/47316319" target="_blank" title="多线程优化思路(转载的)">
			<h4 class="text-truncate oneline" style="width: 610px;">
					多线程优化思路(转载的)				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/C/B/C/3_sharemyfree.jpg" alt="sharemyfree" class="avatar-pic">
						<span class="namebox">
							<span class="name">sharemyfree</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">08-06</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						2982</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/sharemyfree/article/details/47316319" target="_blank" title="多线程优化思路(转载的)">
						<span class="desc oneline">样例程序

程序功能:求从1一直到 APPLE_MAX_VALUE (100000000) 相加累计的和,并赋值给 apple 的a 和b ;求 orange 数据结构中的 a[i]+b[i ] …

来自: sharemyfree的专栏



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/u011163372/article/details/73995897,BlogCommendFromBaidu_30,index_30&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/u011163372/article/details/73995897" target="_blank" title="JAVA高并发多线程必须懂的50个问题">
			<h4 class="text-truncate oneline" style="width: 608px;">
					JAVA高并发多线程必须懂的50个问题				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/6/4/B/3_u011163372.jpg" alt="u011163372" class="avatar-pic">
						<span class="namebox">
							<span class="name">u011163372</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">06-30</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						3.1万</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/u011163372/article/details/73995897" target="_blank" title="JAVA高并发多线程必须懂的50个问题">
						<span class="desc oneline">http://www.importnew.com/12773.html

ImportNew
首页全部文章资讯Web架构基础技术书籍教程Java小组工具资源
Java线程面试题 Top 50
2…

来自: u011163372的博客



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/emesjx/article/details/5961951,BlogCommendFromBaidu_31,index_31&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/emesjx/article/details/5961951" target="_blank" title="LabCVI常见问题及解决方法(七)">
			<h4 class="text-truncate oneline" style="width: 610px;">
					LabCVI常见问题及解决方法(七)				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/9/7/B/3_emesjx.jpg" alt="emesjx" class="avatar-pic">
						<span class="namebox">
							<span class="name">emesjx</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">10-24</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						1569</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/emesjx/article/details/5961951" target="_blank" title="LabCVI常见问题及解决方法(七)">
						<span class="desc oneline">31.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CVI中如何使用UDP协议?答:CVI中没有带有关于UDP协议的fp文件,须要使用winsock来写。&nbsp;32.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CVI下如何编写多线程程序?答:可使用函数模版中的Ut...</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/emesjx">来自:	<span class="blog_title"> emesjx的专栏</span></a></span>
                    					</p>
		</div>
				</div>




		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/q269399361/article/details/60874103,BlogCommendFromBaidu_32,index_32&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/q269399361/article/details/60874103" target="_blank" title="多线程编程(三、多任务并发处理)">
			<h4 class="text-truncate oneline" style="width: 618px;">
					多线程编程(三、多任务并发处理)				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/9/C/6/3_q269399361.jpg" alt="q269399361" class="avatar-pic">
						<span class="namebox">
							<span class="name">q269399361</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">03-08</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						846</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/q269399361/article/details/60874103" target="_blank" title="多线程编程(三、多任务并发处理)">
						<span class="desc oneline">例:假设咱们有个方法要执行100次,获得100次返回的结果总和。串行执行        static void Main(string[] args)
    {
        Se...</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/q269399361">来自:	<span class="blog_title"> H U C</span></a></span>
                    					</p>
		</div>
				</div>

<div class="recommend-item-box recommend-ad-box"><div id="kp_box_65" data-pid="65" data-track-view="{&quot;mod&quot;:&quot;kp_popu_65-84&quot;,&quot;con&quot;:&quot;,,&quot;}" data-track-click="{&quot;mod&quot;:&quot;kp_popu_65-84&quot;,&quot;con&quot;:&quot;,,&quot;}"><div class="mediav_ad"><newsfeed class="newsfeed QIHOO__WEB__SO__1544408381733_950" id="QIHOO__WEB__SO__1544408381733_950" style="display:block;margin:0;padding:0;border:none;width:852px;height:60px;overflow-y:hidden;overflow-x:hidden;position:relative;text-align:left;"><info-div id="QIHOO__WEB__SO__1544408381733_950-info" style="zoom:1"><info-div class="QIHOO__WEB__SO__1544408381733_950 singleImage clk" data-href="https://s1.milkjpg.com/s?type=2&amp;r=20&amp;mv_ref=blog.csdn.net&amp;enup=CAABdZG9tggAAra9kXUA&amp;mvid=NjMyNDM3MTUyMDcxMjIxMTgwNDAwMTg&amp;bid=12c5244f6872987e&amp;price=AAAAAFwNzT0AAAAAAAS8nQ1gOHIg7qDZQeAYxg==&amp;finfo=DAABCAABAAAAbggAAgAAAF8EAAM/UXFHucLHCwAIAAIAAAADCgADLRh+4u/1qckIAAQAAABnBgAGLbcIAAgAEMjgCgAJAAAAAAACEJQGAAoAAAA&amp;ugi=FcTgigEVyNtrTBUCFeIEFewEFQAAFc+u+vIKFgQVyAEA&amp;uai=FaixkwIlAhUEFqj55rjn4+n0WRXyCCXXqIyBBiUAFRoA&amp;ubi=FcLrTBXMlb4CFdas/xYV1P7WVxUEFRwW9IeVjBcWqPnC0dy4v5haNAgWqMKQgAglBhWanvqEAxW+BRUANtrP9LC0wMb3OQA&amp;clickid=0&amp;cpx=__OFFSET_X__&amp;cpy=__OFFSET_Y__&amp;cs=__EVENT_TIME_START__&amp;ce=__EVENT_TIME_END__&amp;csign=5d9dffd90d35b9f1&amp;csign2=0uTNqpekje1=&amp;url=http%3A%2F%2Fdr684.cn" data-pv="https://s1.milkjpg.com/s?type=1&amp;r=20&amp;tid=OTdlOGM0YWZiZDgyMGFiZWYzNmZkZDg1MTliNDUwNWY&amp;finfo=DAABCAABAAAAbggAAgAAAF8EAAM/UXFHucLHCwAIAAIAAAADCgADLRh+4u/1qckIAAQAAABnBgAGLbcIAAgAEMjgCgAJAAAAAAACEJQGAAoAAAA&amp;mv_ref=blog.csdn.net&amp;enup=CAABdZG9tggAAra9kXUA&amp;mvid=NjMyNDM3MTUyMDcxMjIxMTgwNDAwMTg&amp;bid=12c5244f6872987e&amp;ugi=FcTgigEVyNtrTBUCFeIEFewEFQAAFc+u+vIKFgQVyAEA&amp;uai=FaixkwIlAhUEFqj55rjn4+n0WRXyCCXXqIyBBiUAFRoA&amp;ubi=FcLrTBXMlb4CFdas/xYV1P7WVxUEFRwW9IeVjBcWqPnC0dy4v5haNAgWqMKQgAglBhWanvqEAxW+BRUANtrP9LC0wMb3OQA&amp;ds=4&amp;price=AAAAAFwNzT0AAAAAAAS8nQ1gOHIg7qDZQeAYxg==,https://max-l.mediav.com/rtb?type=2&amp;d=100&amp;b=12c5244f6872987e&amp;p=2255956&amp;l=1136674&amp;s=4&amp;z=1&amp;w=AAAAAFwNzT0AAAAAAAS8zVw3r49vNXfxmy/KTg==&amp;k=pBWbOQAAAAA=&amp;i=OYbN8I21DAcm&amp;v=63243715207122118040018" data-clk="https://max-l.mediav.com/rtb?type=3&amp;d=100&amp;b=12c5244f6872987e&amp;p=2255956&amp;l=1136674&amp;s=4&amp;k=pBWbOQAAAAA=&amp;i=OYbN8I21DAcm&amp;v=63243715207122118040018&amp;x=__OFFSET_X__&amp;y=__OFFSET_Y__&amp;st=__EVENT_TIME_START__&amp;et=__EVENT_TIME_END__&amp;tc=&amp;turl=">
<info-div class="wrap">
    <info-div class="singleImage-img singleImage-img-left">
        <info-div class="img" style="background-image:url(https://s3m.mediav.com/galileo/629473-5fd00b0ce9742b9945b91cb8c9d05fa6.jpg)"><info-div class="ads-tag"></info-div></info-div>
    </info-div>
    <info-div class="singleImage-body singleImage-body-left">
        <info-div class="singleImage-title">老股民酒后无心说漏:20年炒股 坚持只看1指标</info-div>
        <info-div class="singleImage-desc">昂可电子 · 燨燚</info-div>
    </info-div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/x_shuck/article/details/52275363,BlogCommendFromBaidu_33,index_33&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/x_shuck/article/details/52275363" target="_blank" title="简单的多线程建立,执行,挂起,终止的例子">
			<h4 class="text-truncate oneline" style="width: 610px;">
					简单的多线程建立,执行,挂起,终止的例子				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/3/D/5/3_x_shuck.jpg" alt="x_shuck" class="avatar-pic">
						<span class="namebox">
							<span class="name">x_shuck</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">08-22</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						2997</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/x_shuck/article/details/52275363" target="_blank" title="简单的多线程建立,执行,挂起,终止的例子">
						<span class="desc oneline">简单的多线程建立,执行,挂起,终止的例子

建立两个线程,建立时即进入阻塞状态,而后根据主线程的input值,去唤醒或阻塞线程执行。
//简单的多线程建立,执行,挂起,终止的例子
//利用win32 A…

来自: timeshark的专栏



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/qq_38375620/article/details/79567641,searchFromBaidu_34,index_34&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/qq_38375620/article/details/79567641" target="_blank" title="【多线程核心技术】---线程通讯">
			<h4 class="text-truncate oneline" style="width: 626px;">
					【多线程核心技术】---线程通讯				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/E/0/C/3_qq_38375620.jpg" alt="qq_38375620" class="avatar-pic">
						<span class="namebox">
							<span class="name">qq_38375620</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">03-17</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						36</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/qq_38375620/article/details/79567641" target="_blank" title="【多线程核心技术】---线程通讯">
						<span class="desc oneline">一:等待/通知机制&nbsp; &nbsp; 线程与线程之间不是独立的个体,它们之间能够互相通讯和协做。&nbsp; &nbsp;1: 不须要等待/通知机制实现线程间的通讯:&nbsp; &nbsp;2:等待/通知机制&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; 多个线程之间能够实现通讯,...</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/qq_38375620">来自:	<span class="blog_title"> 平凡的脚步也能够走完伟大的行程</span></a></span>
                    					</p>
		</div>
				</div>




		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/jiangcaiyang123/article/details/7312326,BlogCommendFromQuerySearch_35,index_35&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/jiangcaiyang123/article/details/7312326" target="_blank" title="多线程实现Galgame的字幕显示">
			<h4 class="text-truncate oneline" style="width: 610px;">
					多线程实现Galgame的字幕显示				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/8/3/5/3_jiangcaiyang123.jpg" alt="jiangcaiyang123" class="avatar-pic">
						<span class="namebox">
							<span class="name">jiangcaiyang123</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">03-02</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						2170</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/jiangcaiyang123/article/details/7312326" target="_blank" title="多线程实现Galgame的字幕显示">
						<span class="desc oneline">演示程序的下载地址:http://download.csdn.net/detail/jiangcaiyang123/4106252

最近在制做一个Galgame的骨架。其实Galgame是技术含量最…

来自: 开发游戏,辉煌全中国



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/xkx_1223_xkx/article/details/77720844,BlogCommendFromQuerySearch_36,index_36&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/xkx_1223_xkx/article/details/77720844" target="_blank" title="多线程编程核心技术读书笔记(一):Java多线程技能">
			<h4 class="text-truncate oneline" style="width: 618px;">
					多线程编程核心技术读书笔记(一):Java多线程技能				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/7/2/B/3_xkx_1223_xkx.jpg" alt="xkx_1223_xkx" class="avatar-pic">
						<span class="namebox">
							<span class="name">xkx_1223_xkx</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">08-30</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						150</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/xkx_1223_xkx/article/details/77720844" target="_blank" title="多线程编程核心技术读书笔记(一):Java多线程技能">
						<span class="desc oneline">什么是进程:可以让操做系统从宏观上看起来同一个时间段有多个任务在执行。进程让操做系统的并发成为了可能。

什么是线程:进程中独立运行的子任务。进程让操做系统的并发性成为可能,而线程让进程的内部并发成为…

来自: 时间慢慢的博客



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/boker_han/article/details/78510791,BlogCommendFromBaidu_37,index_37&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/boker_han/article/details/78510791" target="_blank" title="Java多线程编程技术之入门基础">
			<h4 class="text-truncate oneline" style="width: 626px;">
					Java多线程编程技术之入门基础				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/8/1/D/3_boker_han.jpg" alt="boker_han" class="avatar-pic">
						<span class="namebox">
							<span class="name">boker_han</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">11-12</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						73</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/boker_han/article/details/78510791" target="_blank" title="Java多线程编程技术之入门基础">
						<span class="desc oneline">多线程编程的基础:包括进程与线程、多线程的基本的使用步骤以及终止线程的方法详细解析;...</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/boker_han">来自:	<span class="blog_title"> boker_han的博客</span></a></span>
                    					</p>
		</div>
				</div>

<div class="recommend-item-box recommend-ad-box"><div id="kp_box_66" data-pid="66" data-track-view="{&quot;mod&quot;:&quot;kp_popu_66-87&quot;,&quot;con&quot;:&quot;,,&quot;}" data-track-click="{&quot;mod&quot;:&quot;kp_popu_66-87&quot;,&quot;con&quot;:&quot;,,&quot;}"><div class="mediav_ad"><newsfeed class="newsfeed QIHOO__WEB__SO__1544408381755_942" id="QIHOO__WEB__SO__1544408381755_942" style="display:block;margin:0;padding:0;border:none;width:852px;height:60px;overflow-y:hidden;overflow-x:hidden;position:relative;text-align:left;"><info-div id="QIHOO__WEB__SO__1544408381755_942-info" style="zoom:1"><info-div class="QIHOO__WEB__SO__1544408381755_942 singleImage clk" data-href="https://s1.milkjpg.com/s?type=2&amp;r=20&amp;mv_ref=blog.csdn.net&amp;enup=CAABdZG9tggAAra9kXUA&amp;mvid=NjMyNDM3MTUyMDcxMjIxMTgwNDAwMTg&amp;bid=12c5244f6ddf3053&amp;price=AAAAAFwNzT0AAAAAAAXz3DNx67rDTJuZieQ/wA==&amp;finfo=DAABCAABAAAAMwgAAgAAACAEAAM/WlSeeGkNjQAIAAIAAAADCgADOfeaIIMgOxEIAAQAAAAgBgAGLbcIAAgAB8gwCgAJAAAAAAACEJgGAAoAAAA&amp;ugi=FcTgigEVyNtrTBUCFeIEFewEFQAAFc+u+vIKFgQVyAEA&amp;uai=FeTGlAIlAhUEFqj5t6Sds/fTcxXyCCXvrtv0BSUAFRoA&amp;ubi=FYbOShWI4roCFeD47RYVpPqsVxUEFRwW8vaRhBcWqPmTvZKIzfdzNAgWsMKQgAglBhXDyNiFCxX8ARUANv38kYeGhKGSsgEA&amp;clickid=0&amp;cpx=__OFFSET_X__&amp;cpy=__OFFSET_Y__&amp;cs=__EVENT_TIME_START__&amp;ce=__EVENT_TIME_END__&amp;csign=a608ecb4ff5717f4&amp;csign2=THnIqIXxEY-=&amp;url=http%3A%2F%2Fwww.adtqxz.com" data-pv="https://s1.milkjpg.com/s?type=1&amp;r=20&amp;tid=OTdlOGM0YWZiZDgyMGFiZWYzNmZkZDg1MTliNDUwNWY&amp;finfo=DAABCAABAAAAMwgAAgAAACAEAAM/WlSeeGkNjQAIAAIAAAADCgADOfeaIIMgOxEIAAQAAAAgBgAGLbcIAAgAB8gwCgAJAAAAAAACEJgGAAoAAAA&amp;mv_ref=blog.csdn.net&amp;enup=CAABdZG9tggAAra9kXUA&amp;mvid=NjMyNDM3MTUyMDcxMjIxMTgwNDAwMTg&amp;bid=12c5244f6ddf3053&amp;ugi=FcTgigEVyNtrTBUCFeIEFewEFQAAFc+u+vIKFgQVyAEA&amp;uai=FeTGlAIlAhUEFqj5t6Sds/fTcxXyCCXvrtv0BSUAFRoA&amp;ubi=FYbOShWI4roCFeD47RYVpPqsVxUEFRwW8vaRhBcWqPmTvZKIzfdzNAgWsMKQgAglBhXDyNiFCxX8ARUANv38kYeGhKGSsgEA&amp;ds=4&amp;price=AAAAAFwNzT0AAAAAAAXz3DNx67rDTJuZieQ/wA==,https://max-l.mediav.com/rtb?type=2&amp;d=100&amp;b=12c5244f6ddf3053&amp;p=2265522&amp;l=1136674&amp;s=4&amp;z=1&amp;w=AAAAAFwNzT0AAAAAAAXz94CH8ykQQbED588o+g==&amp;k=6B3C6AAAAAA=&amp;i=IebrA121DANz&amp;v=63243715207122118040018" data-clk="https://max-l.mediav.com/rtb?type=3&amp;d=100&amp;b=12c5244f6ddf3053&amp;p=2265522&amp;l=1136674&amp;s=4&amp;k=6B3C6AAAAAA=&amp;i=IebrA121DANz&amp;v=63243715207122118040018&amp;x=__OFFSET_X__&amp;y=__OFFSET_Y__&amp;st=__EVENT_TIME_START__&amp;et=__EVENT_TIME_END__&amp;tc=&amp;turl=">
<info-div class="wrap">
    <info-div class="singleImage-img singleImage-img-left">
        <info-div class="img" style="background-image:url(https://s3m.mediav.com/galileo/611203-3df69c7920b6a8d987978cbcbf2fe226.jpg)"><info-div class="ads-tag"></info-div></info-div>
    </info-div>
    <info-div class="singleImage-body singleImage-body-left">
        <info-div class="singleImage-title">紧急通知:吸这两种烟的人,快去医院检查!.</info-div>
        <info-div class="singleImage-desc">华佰科技 · 燨燚</info-div>
    </info-div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/jubaoquan/article/details/79196956,BlogCommendFromBaidu_38,index_38&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/jubaoquan/article/details/79196956" target="_blank" title="多线程编程的底层原理">
			<h4 class="text-truncate oneline" style="width: 618px;">
					多线程编程的底层原理				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/5/4/6/3_jubaoquan.jpg" alt="jubaoquan" class="avatar-pic">
						<span class="namebox">
							<span class="name">jubaoquan</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">01-29</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						737</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/jubaoquan/article/details/79196956" target="_blank" title="多线程编程的底层原理">
						<span class="desc oneline">简介

    在前面的一篇文章里我对java threadpool的几种基本应用方法作了个总结。Java的线程池针对不一样应用的场景,主要有固定长度类型、可变长度类型以及定时执行等几种。针对这几种…

来自: jubaoquan的博客



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/lyl_98/article/details/1111003,BlogCommendFromBaidu_39,index_39&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/lyl_98/article/details/1111003" target="_blank" title="Windows下多线程编程技术及其实现">
			<h4 class="text-truncate oneline" style="width: 618px;">
					Windows下多线程编程技术及其实现				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/9/0/3/3_lyl_98.jpg" alt="lyl_98" class="avatar-pic">
						<span class="namebox">
							<span class="name">lyl_98</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">08-24</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						940</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/lyl_98/article/details/1111003" target="_blank" title="Windows下多线程编程技术及其实现">
						<span class="desc oneline">Windows下多线程编程技术及其实现本文首先讨论16位Windows下不具有的线程的概念,而后着重讲述在32位Windows 95环境下多线程的编程技术,最后给出利用该技术的一个实例,即基于Wind...</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/lyl_98">来自:	<span class="blog_title"> 自由无限</span></a></span>
                    					</p>
		</div>
				</div>




		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/yinwenjie/article/details/50371005,BlogCommendFromBaidu_40,index_40&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/yinwenjie/article/details/50371005" target="_blank" title="线程基础:线程(1)——操做系统和线程原理">
			<h4 class="text-truncate oneline" style="width: 608px;">
					线程基础:线程(1)——操做系统和线程原理				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/1/E/F/3_yinwenjie.jpg" alt="yinwenjie" class="avatar-pic">
						<span class="namebox">
							<span class="name">yinwenjie</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">12-21</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						1.3万</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/yinwenjie/article/details/50371005" target="_blank" title="线程基础:线程(1)——操做系统和线程原理">
						<span class="desc oneline">本人不才,应读者要求新开专栏,与各位读者分享本身对JAVA线程技术的理解和使用经验。这个专栏将分红两个部分:线程基础知识和锁知识。专栏的难度应该是我所开专栏中难度最低的一个,着重于线程基础知识的讲解,...</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/yinwenjie">来自:	<span class="blog_title"> JAVA入门中</span></a></span>
                    					</p>
		</div>
				</div>




		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/qi_ming88/article/details/79948431,BlogCommendFromBaidu_41,index_41&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/qi_ming88/article/details/79948431" target="_blank" title="线程的实现方式——多线程技术二">
			<h4 class="text-truncate oneline" style="width: 626px;">
					线程的实现方式——<em>多线程技术</em>二				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/4/9/F/3_qi_ming88.jpg" alt="qi_ming88" class="avatar-pic">
						<span class="namebox">
							<span class="name">qi_ming88</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">04-15</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						42</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/qi_ming88/article/details/79948431" target="_blank" title="线程的实现方式——多线程技术二">
						<span class="desc oneline">本文主要介绍关于线程如何实现的方式,主要介绍的是在jdk1.5以前的两种方式:分别是继承Thread类与实现Runnable接口。继承Thread类:第一种:new Thread(){}.start(...</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/qi_ming88">来自:	<span class="blog_title"> qi_ming88的博客</span></a></span>
                    					</p>
		</div>
				</div>




			<div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://download.csdn.net/download/u013142781/9452683,BlogCommendFromBaidu_42,index_42&quot;}" data-flg="true">
		<a href="https://download.csdn.net/download/u013142781/9452683" target="_blank">
			<div class="content">
				<div class="">
					<span class="type">下载</span>
					<h4 class="text-truncate oneline clearfix">
						《Java多线程编程核心技术》带书签目录 高清完整PDF版 下载						</h4>
					<span class="data float-right">03-04</span>
				</div>
				<div class="desc oneline">
						内容简介 · · · · · · 资深Java专家10年经验总结,全程案例式讲解,首本全面介绍Java多线程编程技术的专著 结合大量实例,全面讲解Java多线程编程中的并发访问、线程间通讯、锁等最难突					</div>
			</div>
		</a>
	</div>

<div class="recommend-item-box recommend-ad-box"><div id="kp_box_67" data-pid="67" data-track-view="{&quot;mod&quot;:&quot;kp_popu_67-699&quot;,&quot;con&quot;:&quot;,,&quot;}" data-track-click="{&quot;mod&quot;:&quot;kp_popu_67-699&quot;,&quot;con&quot;:&quot;,,&quot;}"><script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>

<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/u013142781/article/details/50805655,BlogCommendFromBaidu_43,index_43&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/u013142781/article/details/50805655" target="_blank" title="《Java多线程编程核心技术》推荐">
			<h4 class="text-truncate oneline" style="width: 608px;">
					《Java多线程编程核心技术》推荐				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/F/C/2/3_u013142781.jpg" alt="u013142781" class="avatar-pic">
						<span class="namebox">
							<span class="name">u013142781</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">03-04</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						2.2万</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/u013142781/article/details/50805655" target="_blank" title="《Java多线程编程核心技术》推荐">
						<span class="desc oneline">写这篇博客主要是给猿友们推荐一本书《Java多线程编程核心技术》。之因此要推荐它,主要由于这本书写得十分通俗易懂,以实例贯穿整本书,使得本来抽象的概念,理解起来再也不抽象。只要你有一点点Java基础,你...</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/u013142781">来自:	<span class="blog_title"> 小宝鸽</span></a></span>
                    					</p>
		</div>
				</div>




		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/kkkloveyou/article/details/6724083,BlogCommendFromBaidu_44,index_44&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/kkkloveyou/article/details/6724083" target="_blank" title="java多线程编程技术 +代码实例">
			<h4 class="text-truncate oneline" style="width: 608px;">
					java多线程编程技术 +代码实例				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/E/1/F/3_kkkloveyou.jpg" alt="kkkloveyou" class="avatar-pic">
						<span class="namebox">
							<span class="name">kkkloveyou</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">08-27</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						4.2万</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/kkkloveyou/article/details/6724083" target="_blank" title="java多线程编程技术 +代码实例">
						<span class="desc oneline">1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; java和他的API均可以使用并发。能够指定程序包含不一样的执行线程,每一个线程都具备本身的方法调用堆栈和程序计数器,使得线程在与其余线程并发地执行可以共享程序范围内的资源,好比共享内存...</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/kkkloveyou">来自:	<span class="blog_title"> 老卫的技术站</span></a></span>
                    					</p>
		</div>
				</div>




		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/vinowan/article/details/8196383,BlogCommendFromBaidu_45,index_45&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/vinowan/article/details/8196383" target="_blank" title="folly源码分析(3)- ThreadLocalPtr">
			<h4 class="text-truncate oneline" style="width: 610px;">
					folly源码分析(3)- ThreadLocalPtr				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/B/8/9/3_vinowan.jpg" alt="vinowan" class="avatar-pic">
						<span class="namebox">
							<span class="name">vinowan</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">11-18</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						1093</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/vinowan/article/details/8196383" target="_blank" title="folly源码分析(3)- ThreadLocalPtr">
						<span class="desc oneline">经过声明ThreadLocalPtr对象,能够动态增减thread

local对象。
基本思路以下:
1)经过__thread而不是pthread_getspecific来声明thread


来自: vinowan的专栏



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/fengzhihua_395/article/details/2033814,BlogCommendFromBaidu_46,index_46&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/fengzhihua_395/article/details/2033814" target="_blank" title="多线程编程技术 (转)">
			<h4 class="text-truncate oneline" style="width: 610px;">
					多线程编程技术 (转)				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/2/A/2/3_fengzhihua_395.jpg" alt="fengzhihua_395" class="avatar-pic">
						<span class="namebox">
							<span class="name">fengzhihua_395</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">01-10</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						3079</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/fengzhihua_395/article/details/2033814" target="_blank" title="多线程编程技术 (转)">
						<span class="desc oneline">&nbsp;多线程编程技术 线程是比进程更小的单位,能够认为进程是由一个或多个线程组成的。听说之前的 400版本并不支持真正的多线程技术,在 4.2版后才从内核上提供了对多线程的支持。总之写这份文档的时候,绝大...</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/fengzhihua_395">来自:	<span class="blog_title"> 已经进入嵌入internet时代-冯志华Blog</span></a></span>
                    					</p>
		</div>
				</div>




		<div class="recommend-item-box recommend-box-ident" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://bbs.csdn.net/topics/30379606,BlogCommendFromQuerySearch_47,index_47&quot;}" data-flg="true">
	<a href="https://bbs.csdn.net/topics/30379606" target="_blank">
		<h4 class="text-truncate oneline" style="width: 593px;">
				<em>多线程技术</em>...			</h4>
		<div class="info-box d-flex align-content-center">
			<p>
							</p>
			<p>
				<span class="date">07-04</span>
			</p>
		</div>
		<p class="content oneline" style="width: 702px;">
				多线程技术...rn有好书或者网站例子介绍rnrn谢谢rnmadmanahong@163.com			</p>
	</a>

</div>

<div class="recommend-item-box recommend-ad-box"><div id="kp_box_68" data-pid="68" data-track-view="{&quot;mod&quot;:&quot;kp_popu_68-701&quot;,&quot;con&quot;:&quot;,,&quot;}" data-track-click="{&quot;mod&quot;:&quot;kp_popu_68-701&quot;,&quot;con&quot;:&quot;,,&quot;}"><script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>

<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/htwhtw123/article/details/81182872,BlogCommendFromQuerySearch_48,index_48&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/htwhtw123/article/details/81182872" target="_blank" title="Java 使用notifyAll()和wait()实现一个简易生产者和消费者">
			<h4 class="text-truncate oneline" style="width: 626px;">
					Java 使用notifyAll()和wait()实现一个简易生产者和消费者				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/4/C/1/3_htwhtw123.jpg" alt="htwhtw123" class="avatar-pic">
						<span class="namebox">
							<span class="name">htwhtw123</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">07-24</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						82</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/htwhtw123/article/details/81182872" target="_blank" title="Java 使用notifyAll()和wait()实现一个简易生产者和消费者">
						<span class="desc oneline">转载自:《Java编程思想(第四版)》p709-711

请考虑这样一个饭店,它有一个厨师和一个服务员。这个服务员必须等待厨师准备好膳食。当厨师准备好时,他会通知服务员,以后服务员上菜,而后返回继续等…

来自: HeTingwei的博客



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/tpstu/article/details/6893373,BlogCommendFromQuerySearch_49,index_49&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/tpstu/article/details/6893373" target="_blank" title="一道简单的多线程题">
			<h4 class="text-truncate oneline" style="width: 618px;">
					一道简单的多线程题				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="https://avatar.csdn.net/1/1/6/3_tpstu.jpg" alt="tpstu" class="avatar-pic">
						<span class="namebox">
							<span class="name">tpstu</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">10-21</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						507</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/tpstu/article/details/6893373" target="_blank" title="一道简单的多线程题">
						<span class="desc oneline">采用Java多线程技术编写程序,其中包括两个线程:A和B,其中A线程准备休眠一小时,B线程每隔一秒输入3句“起床”后,吵醒休眠的线程A。

public class  T2{
public st…

来自: tpstu的专栏



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/blogdevteam/article/details/84874036,BlogCommendHotData_0,index_50&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/blogdevteam/article/details/84874036" target="_blank" title="CSDN 2018博客之星活动报名开始了!">
			<h4 class="text-truncate oneline" style="width: 610px;">
					CSDN 2018博客之星活动报名开始了!				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="blogdevteam" class="avatar-pic">
						<span class="namebox">
							<span class="name">blogdevteam</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">12-07</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						3370</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/blogdevteam/article/details/84874036" target="_blank" title="CSDN 2018博客之星活动报名开始了!">
						<span class="desc oneline">如期而至,CSDN 2018 博客之星评选活动又跟你们见面了。正如咱们一直坚持的主题“星星之火能够燎原”同样,点滴记录,精彩人生。一篇文章虽少,但它却能在无形之中帮助许许多多开发者,给予技术人以无限温...</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/blogdevteam">来自:	<span class="blog_title"> CSDN 官方博客</span></a></span>
                    					</p>
		</div>
				</div>




		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/qq_25814003/article/details/82415144,BlogCommendHotData_1,index_51&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/qq_25814003/article/details/82415144" target="_blank" title="SQL提高(二)">
			<h4 class="text-truncate oneline" style="width: 602px;">
					SQL提高(二)				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="qq_25814003" class="avatar-pic">
						<span class="namebox">
							<span class="name">qq_25814003</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">09-05</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						18566</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/qq_25814003/article/details/82415144" target="_blank" title="SQL提高(二)">
						<span class="desc oneline">Sql表操做提高

1、前言

        Sql是最重要的关系数据库操做语言,如今基本上任何与数据库相关的操做都离不开sql。因此说sql功能是很强大的。

        可是Sql对表的操做…

来自: 愤怒的懒洋洋的博客



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/qq_25814003/article/details/81982882,BlogCommendHotData_2,index_52&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/qq_25814003/article/details/81982882" target="_blank" title="Swagger教程二">
			<h4 class="text-truncate oneline" style="width: 602px;">
					Swagger教程二				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="qq_25814003" class="avatar-pic">
						<span class="namebox">
							<span class="name">qq_25814003</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">08-23</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						29102</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/qq_25814003/article/details/81982882" target="_blank" title="Swagger教程二">
						<span class="desc oneline">Swagger搭建Restful接口教程二

1、前言

        上一章节咱们说的是swagger-ui也就是swagger1,接下来咱们说的是swagger升级版swagger2

    …

来自: 愤怒的懒洋洋的博客



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/weixin_43792393/article/details/84456409,BlogCommendHotData_3,index_53&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/weixin_43792393/article/details/84456409" target="_blank" title="PyQt5+VSCode简单配置附pyuic编译的附加选项说明...">
			<h4 class="text-truncate oneline" style="width: 610px;">
					PyQt5+VSCode简单配置附pyuic编译的附加选项说明...				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="weixin_43792393" class="avatar-pic">
						<span class="namebox">
							<span class="name">weixin_43792393</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">11-25</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						2052</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/weixin_43792393/article/details/84456409" target="_blank" title="PyQt5+VSCode简单配置附pyuic编译的附加选项说明...">
						<span class="desc oneline">PyQt5+VSCode简单配置附pyuic编译的附加选项说明Python IDE 之 VSCode首先第一步第二步第三步第四步若是你比较懒- -!,不想每次都本身输入if __name__ == &amp;...</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/weixin_43792393">来自:	<span class="blog_title"> weixin_43792393的博客</span></a></span>
                    					</p>
		</div>
				</div>




		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/qq_25814003/article/details/82382599,BlogCommendHotData_4,index_54&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/qq_25814003/article/details/82382599" target="_blank" title="MyBatis——mapper.xml提高指南">
			<h4 class="text-truncate oneline" style="width: 602px;">
					MyBatis——mapper.xml提高指南				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="qq_25814003" class="avatar-pic">
						<span class="namebox">
							<span class="name">qq_25814003</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">09-04</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						18096</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/qq_25814003/article/details/82382599" target="_blank" title="MyBatis——mapper.xml提高指南">
						<span class="desc oneline">MyBatis常见细节问题

1、前言

        MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎全部的 JDBC 代码和手动设置…

来自: 愤怒的懒洋洋的博客



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/iceSony/article/details/77801024,BlogCommendHotData_5,index_55&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/iceSony/article/details/77801024" target="_blank" title="【Linux从入门到放弃】Linux开发次日&amp;用户的添加&amp;安装软件&amp;更改ssh登陆">
			<h4 class="text-truncate oneline" style="width: 610px;">
					【Linux从入门到放弃】Linux开发次日&amp;用户的添加&amp;安装软件&amp;更改ssh登陆				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="iceSony" class="avatar-pic">
						<span class="namebox">
							<span class="name">iceSony</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">09-02</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						1312</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/iceSony/article/details/77801024" target="_blank" title="【Linux从入门到放弃】Linux开发次日&amp;用户的添加&amp;安装软件&amp;更改ssh登陆">
						<span class="desc oneline">Linux次日

1.用户的添加

useradd iceFrog

passwd iceFrog

更改密码:echo “dota”|passwd -stdin iceFrog

切换用户:su …

来自: 唐三十胖子的博客



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/voke_/article/details/76418116,BlogCommendHotData_6,index_56&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/voke_/article/details/76418116" target="_blank" title="webstorm 2018 激活破解方法大全">
			<h4 class="text-truncate oneline" style="width: 594px;">
					webstorm 2018 激活破解方法大全				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="voke_" class="avatar-pic">
						<span class="namebox">
							<span class="name">voke_</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">07-31</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						664895</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/voke_/article/details/76418116" target="_blank" title="webstorm 2018 激活破解方法大全">
						<span class="desc oneline">webstorm 做为最近最火的前端开发工具,也确实对得起那个价格,可是秉着勤俭节约的传统美德,咱们确定是能省则省啊。

方法一:(更新时间:2018/4/8)v3.3

注册时,在打开的Lice…

来自: 唐大帅的编程之路



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/u014044812/article/details/78727496,BlogCommendHotData_7,index_57&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/u014044812/article/details/78727496" target="_blank" title="pyCharm最新2018激活码">
			<h4 class="text-truncate oneline" style="width: 586px;">
					pyCharm最新2018激活码				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="u014044812" class="avatar-pic">
						<span class="namebox">
							<span class="name">u014044812</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">12-06</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						1212566</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/u014044812/article/details/78727496" target="_blank" title="pyCharm最新2018激活码">
						<span class="desc oneline">本教程对jetbrains全系列可用例:IDEA、WebStorm、phpstorm、clion等

因公司的需求,须要作一个爬取最近上映的电影、列车号、航班号、机场、车站等信息,因此须要我作一个爬虫…

来自: 昌昌



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/Kinb_huangwei/article/details/2032746,BlogCommendHotData_8,index_58&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/Kinb_huangwei/article/details/2032746" target="_blank" title="很黄很暴力的十个网站">
			<h4 class="text-truncate oneline" style="width: 602px;">
					很黄很暴力的十个网站				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="Kinb_huangwei" class="avatar-pic">
						<span class="namebox">
							<span class="name">Kinb_huangwei</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">01-09</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						41000</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/Kinb_huangwei/article/details/2032746" target="_blank" title="很黄很暴力的十个网站">
						<span class="desc oneline">13岁的北京学生张某,在去年12月27日19时新闻联播一则关于净化网络视听的新闻里,接受采访时说的话激起了轩然大波:“上次我上网查资料,忽然弹出来一个网页,很黄很暴力,我赶忙把它给关了。”这个片断被C...</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/Kinb_huangwei">来自:	<span class="blog_title"> Kinb_huangwei的专栏</span></a></span>
                    					</p>
		</div>
				</div>




		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/xyisv/article/details/79595711,BlogCommendHotData_9,index_59&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/xyisv/article/details/79595711" target="_blank" title="最新迅雷“应版权方要求,文件没法下载”的解决办法">
			<h4 class="text-truncate oneline" style="width: 594px;">
					最新迅雷“应版权方要求,文件没法下载”的解决办法				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="xyisv" class="avatar-pic">
						<span class="namebox">
							<span class="name">xyisv</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">03-17</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						209257</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/xyisv/article/details/79595711" target="_blank" title="最新迅雷“应版权方要求,文件没法下载”的解决办法">
						<span class="desc oneline">迅雷下载有的电影电视剧的时候会出现:应版权方要求,文件没法下载,或者显示迅雷任务包含违规内容 没法继续下载。这个是由于版权方和迅雷公司交涉,迅雷公司经过技术手段阻止了迅雷任务的下载,好比下载最近的《人...</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/xyisv">来自:	<span class="blog_title"> 徐奕的专栏</span></a></span>
                    					</p>
		</div>
				</div>




		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/weixin_42255362/article/details/81207763,BlogCommendHotData_10,index_60&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/weixin_42255362/article/details/81207763" target="_blank" title="整理了10个干净、好用的BT、磁力链搜索网站给你们">
			<h4 class="text-truncate oneline" style="width: 602px;">
					整理了10个干净、好用的BT、磁力链搜索网站给你们				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="weixin_42255362" class="avatar-pic">
						<span class="namebox">
							<span class="name">weixin_42255362</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">07-25</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						79308</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/weixin_42255362/article/details/81207763" target="_blank" title="整理了10个干净、好用的BT、磁力链搜索网站给你们">
						<span class="desc oneline">

如今愈来愈流行在线看视频了,可是对于我得收藏癖爱好者,仍是但愿能够有比较好的资源网站的,尤为是种子、磁力链网站。因此就整理了一份干净、好用的TOP10出来:

先推荐一个下载磁力链的工具:

马…

来自: YXAPP的技术分享



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/forezp/article/details/70148833,BlogCommendHotData_11,index_61&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/forezp/article/details/70148833" target="_blank" title="史上最简单的 SpringCloud 教程 | 终章">
			<h4 class="text-truncate oneline" style="width: 586px;">
					史上最简单的 SpringCloud 教程 | 终章				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="forezp" class="avatar-pic">
						<span class="namebox">
							<span class="name">forezp</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">04-12</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						1220279</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/forezp/article/details/70148833" target="_blank" title="史上最简单的 SpringCloud 教程 | 终章">
						<span class="desc oneline">

转载请标明出处: http://blog.csdn.net/forezp/article/details/70148833
本文出自方志朋的博客

错过了这一篇,你可能再也学不会 Sp…

来自: 方志朋的专栏



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/pyf_914406232/article/details/84455363,BlogCommendHotData_12,index_62&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/pyf_914406232/article/details/84455363" target="_blank" title="批处理添加字段和删除字段">
			<h4 class="text-truncate oneline" style="width: 610px;">
					批处理添加字段和删除字段				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="pyf_914406232" class="avatar-pic">
						<span class="namebox">
							<span class="name">pyf_914406232</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">11-25</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						4417</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/pyf_914406232/article/details/84455363" target="_blank" title="批处理添加字段和删除字段">
						<span class="desc oneline">在平时的工做中你或许会遇到这样的问题,给某个文件夹下面的全部的图片添加同一个字符串,若是一个一个去F2再CTRL+V这样就会烦得很,图片几个还好,若是是几百个图片那么工做的效率就会极低,windown...</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/pyf_914406232">来自:	<span class="blog_title"> pyf_914406232的博客</span></a></span>
                    					</p>
		</div>
				</div>




		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/weixin_43201015/article/details/84567595,BlogCommendHotData_13,index_63&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/weixin_43201015/article/details/84567595" target="_blank" title="ElementUI离线使用-分页功能">
			<h4 class="text-truncate oneline" style="width: 618px;">
					ElementUI离线使用-分页功能				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="weixin_43201015" class="avatar-pic">
						<span class="namebox">
							<span class="name">weixin_43201015</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">11-27</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						247</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/weixin_43201015/article/details/84567595" target="_blank" title="ElementUI离线使用-分页功能">
						<span class="desc oneline">Element离线使用 -分页功能

引入element后,因为网络速度较慢,发现页面运行起来,比较卡顿,因而将其下载到本地
1.下载静态资源
element-ui 官网 :http://element…



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/qq_40513881/article/details/84103427,BlogCommendHotData_14,index_64&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/qq_40513881/article/details/84103427" target="_blank" title="vue-cli3脚手架/单文件/环境搭建">
			<h4 class="text-truncate oneline" style="width: 610px;">
					vue-cli3脚手架/单文件/环境搭建				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="qq_40513881" class="avatar-pic">
						<span class="namebox">
							<span class="name">qq_40513881</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">11-15</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						2970</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/qq_40513881/article/details/84103427" target="_blank" title="vue-cli3脚手架/单文件/环境搭建">
						<span class="desc oneline">&nbsp;

vue-cli3脚手架/单文件/环境搭建。vue3.x版本相对于2.x版本作了许多地方的优化,我的总结主要仍是使用上使开发者更加一目了然,配置起来也更加的方便,减小了各类webpack里面的lo…

来自: 欢迎来到☆槿畔☆的博客



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/qq_40513881/article/details/84345352,BlogCommendHotData_15,index_65&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/qq_40513881/article/details/84345352" target="_blank" title="vue3修改link标签默认icon">
			<h4 class="text-truncate oneline" style="width: 610px;">
					vue3修改link标签默认icon				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="qq_40513881" class="avatar-pic">
						<span class="namebox">
							<span class="name">qq_40513881</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">11-22</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						2930</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/qq_40513881/article/details/84345352" target="_blank" title="vue3修改link标签默认icon">
						<span class="desc oneline">vue3修改link中标签默认icon,vue3初次使用的时候很差好阅读配置不免会遇到一些坑,本人在项目完结的时候打算把浏览器的导航小icon图标给替换了,但是并无那么顺利,那么如何在vue3中替换...</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/qq_40513881">来自:	<span class="blog_title"> 欢迎来到☆槿畔☆的博客</span></a></span>
                    					</p>
		</div>
				</div>




		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/sinat_42338962/article/details/84310689,BlogCommendHotData_16,index_66&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/sinat_42338962/article/details/84310689" target="_blank" title="jsp四大做用域和九大对象">
			<h4 class="text-truncate oneline" style="width: 618px;">
					jsp四大做用域和九大对象				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="sinat_42338962" class="avatar-pic">
						<span class="namebox">
							<span class="name">sinat_42338962</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">11-20</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						200</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/sinat_42338962/article/details/84310689" target="_blank" title="jsp四大做用域和九大对象">
						<span class="desc oneline">经常使用于服务器间同一请求不一样页面之间的参数传递,常应用于表单的控件值传递。...</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/sinat_42338962">来自:	<span class="blog_title"> 猪精的博客</span></a></span>
                    					</p>
		</div>
				</div>




		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/weixin_43201015/article/details/83796490,BlogCommendHotData_17,index_67&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/weixin_43201015/article/details/83796490" target="_blank" title="架构模式之MVVM">
			<h4 class="text-truncate oneline" style="width: 618px;">
					架构模式之MVVM				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="weixin_43201015" class="avatar-pic">
						<span class="namebox">
							<span class="name">weixin_43201015</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">11-06</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						221</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/weixin_43201015/article/details/83796490" target="_blank" title="架构模式之MVVM">
						<span class="desc oneline">架构模式之MVVM

前言
MVVM是一种架构模式,本文会涉及一小点vue代码,以及一篇简单的springboot的代码,建议在阅读本文档前先对这两门技术作一些学习。
什么是MVVM
MVVM是三个单词…



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/weixin_43752064/article/details/84846323,BlogCommendHotData_18,index_68&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/weixin_43752064/article/details/84846323" target="_blank" title="SpringBoot整合ActiveMQ消息队列">
			<h4 class="text-truncate oneline" style="width: 626px;">
					SpringBoot整合ActiveMQ消息队列				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="weixin_43752064" class="avatar-pic">
						<span class="namebox">
							<span class="name">weixin_43752064</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">12-06</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						19</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/weixin_43752064/article/details/84846323" target="_blank" title="SpringBoot整合ActiveMQ消息队列">
						<span class="desc oneline">首先要讲什么是ActiveMQ:AciveMQ是Apache出品的目前最流行,能力强劲的开源消息总线

主要功能:
一、 解决服务之间代码耦合
二、 使用消息队列,增长系统并发处理量
主要应用场景:
1…

来自: 熊局长的博客



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/sinat_42338962/article/details/84816252,BlogCommendHotData_19,index_69&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/sinat_42338962/article/details/84816252" target="_blank" title="常见缓存集锦">
			<h4 class="text-truncate oneline" style="width: 626px;">
					常见缓存集锦				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="sinat_42338962" class="avatar-pic">
						<span class="namebox">
							<span class="name">sinat_42338962</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">12-05</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						38</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/sinat_42338962/article/details/84816252" target="_blank" title="常见缓存集锦">
						<span class="desc oneline">缓存技术,五花八门,有 memcache、redis、squid、varnish、web cache、 CDN等等。缓存技术主要分为三个大类:

一:数据库缓存
二:静态缓存
三:动态缓存
1.数据库缓…

来自: 猪精的博客



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/yueruitao/article/details/82556137,BlogCommendHotData_20,index_70&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/yueruitao/article/details/82556137" target="_blank" title="赛风 Psiphon3下载">
			<h4 class="text-truncate oneline" style="width: 602px;">
					赛风 Psiphon3下载				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="yueruitao" class="avatar-pic">
						<span class="namebox">
							<span class="name">yueruitao</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">09-09</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						20572</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/yueruitao/article/details/82556137" target="_blank" title="赛风 Psiphon3下载">
						<span class="desc oneline">来自蚂蚁小草

下载地址https://s3.amazonaws.com/psiphon/web/mjr4-p23r-puwl/zh/download.html#direct

 …

来自: www.mayixiaocao.cn



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/weixin_43201015/article/details/83796417,BlogCommendHotData_21,index_71&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/weixin_43201015/article/details/83796417" target="_blank" title="Vue项目搭建 + 引入ElementUI">
			<h4 class="text-truncate oneline" style="width: 618px;">
					Vue项目搭建 + 引入ElementUI				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="weixin_43201015" class="avatar-pic">
						<span class="namebox">
							<span class="name">weixin_43201015</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">11-06</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						233</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/weixin_43201015/article/details/83796417" target="_blank" title="Vue项目搭建 + 引入ElementUI">
						<span class="desc oneline">初始化单页系统

在学习Vue的过程当中,官方网站都是给了很是详细的介绍,因此初始化大型单页应用,官网给的参考资料地址:https://cn.vuejs.org/v2/guide/installation…



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/qq_28735663/article/details/80634300,BlogCommendHotData_22,index_72&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/qq_28735663/article/details/80634300" target="_blank" title="最新最详细的黑苹果10.13.4安装教程">
			<h4 class="text-truncate oneline" style="width: 594px;">
					最新最详细的黑苹果10.13.4安装教程				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="qq_28735663" class="avatar-pic">
						<span class="namebox">
							<span class="name">qq_28735663</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">06-09</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						157476</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/qq_28735663/article/details/80634300" target="_blank" title="最新最详细的黑苹果10.13.4安装教程">
						<span class="desc oneline">最新最全求详细的13.4的黑苹果安装教程,带安装工具和镜像!安装10.13的过程当中,在论坛High Sierra版能查到的资料不多,安装教程帖子不多,如今把我安装10.13的过程作一个详细教程,列出来...</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/qq_28735663">来自:	<span class="blog_title"> qq_28735663的博客</span></a></span>
                    					</p>
		</div>
				</div>




		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/qq_25814003/article/details/82387224,BlogCommendHotData_23,index_73&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/qq_25814003/article/details/82387224" target="_blank" title="SQL提高(一)">
			<h4 class="text-truncate oneline" style="width: 602px;">
					SQL提高(一)				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="qq_25814003" class="avatar-pic">
						<span class="namebox">
							<span class="name">qq_25814003</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">09-04</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						18379</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/qq_25814003/article/details/82387224" target="_blank" title="SQL提高(一)">
						<span class="desc oneline">Sql不常见关键字提高

1、前言

Sql是最重要的关系数据库操做语言,如今基本上任何与数据库相关的操做都离不开sql。因此说sql功能是很强大的。

咱们经常使用的sql关键字不外乎 group by…

来自: 愤怒的懒洋洋的博客



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/shadandeajian/article/details/80349939,BlogCommendHotData_24,index_74&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/shadandeajian/article/details/80349939" target="_blank" title="Proxyee-down的下载与安装教程">
			<h4 class="text-truncate oneline" style="width: 594px;">
					Proxyee-down的下载与安装教程				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="shadandeajian" class="avatar-pic">
						<span class="namebox">
							<span class="name">shadandeajian</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">05-17</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						129485</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/shadandeajian/article/details/80349939" target="_blank" title="Proxyee-down的下载与安装教程">
						<span class="desc oneline">Proxyee-down是monkeyWie在Github上的一个开源项目,向做者致敬。

最新版的Proxyee-down为3.12(2018.10更新),由于做者在3.x后的版本中并未发布exe版…

来自: shadandeajian的博客



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/ling_wang/article/details/78821630,BlogCommendHotData_25,index_75&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/ling_wang/article/details/78821630" target="_blank" title="军事理论课答案(西安交大版)">
			<h4 class="text-truncate oneline" style="width: 594px;">
					军事理论课答案(西安交大版)				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="ling_wang" class="avatar-pic">
						<span class="namebox">
							<span class="name">ling_wang</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">12-16</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						973515</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/ling_wang/article/details/78821630" target="_blank" title="军事理论课答案(西安交大版)">
						<span class="desc oneline">1.1

1
【单选题】我国陆地领土面积排名世界第几?(C)
A、1
B、2
C、3
D、4
2
【单选题】如下哪一个国家不属于金砖五国(BRICS)?(B)
A、中国
B、日本
C…

来自: ling_wang的博客



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/iceSony/article/details/84667551,BlogCommendHotData_26,index_76&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/iceSony/article/details/84667551" target="_blank" title="【《Unity Shader入门精要》 提炼总结】(十三)第十三章·透明度测试的Shader实现&amp;透明度混合的Shader实现">
			<h4 class="text-truncate oneline" style="width: 610px;">
					【《Unity Shader入门精要》 提炼总结】(十三)第十三章·透明度测试的Shader实现&amp;透明度混合的Shader实现				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="iceSony" class="avatar-pic">
						<span class="namebox">
							<span class="name">iceSony</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">11-30</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						1087</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/iceSony/article/details/84667551" target="_blank" title="【《Unity Shader入门精要》 提炼总结】(十三)第十三章·透明度测试的Shader实现&amp;透明度混合的Shader实现">
						<span class="desc oneline">

 

 

 

本文由@唐三十胖子出品,转载请注明出处。  文章连接:http://www.javashuo.com/article/p-wbskcrwh-cc.html

 

 

 …

来自: 唐三十胖子的博客



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/qq_18105691/article/details/84783937,BlogCommendHotData_27,index_77&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/qq_18105691/article/details/84783937" target="_blank" title="关于PHP在Windows IIS上传的图片401没法访问的解决方法">
			<h4 class="text-truncate oneline" style="width: 610px;">
					关于PHP在Windows IIS上传的图片401没法访问的解决方法				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="qq_18105691" class="avatar-pic">
						<span class="namebox">
							<span class="name">qq_18105691</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">12-04</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						2344</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/qq_18105691/article/details/84783937" target="_blank" title="关于PHP在Windows IIS上传的图片401没法访问的解决方法">
						<span class="desc oneline">今天项目上线发现上传图片没法正常显示,报401权限问题在这里记录下解决办法

问题总结:
在Windows平台下若是PHP使用的是IIS的话那么php在上传文件时是先将文件上传到一个临时目录下的


来自: psw的博客



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/u010569419/article/details/83115412,BlogCommendHotData_28,index_78&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/u010569419/article/details/83115412" target="_blank" title="selenium +java 多个类公用driver问题">
			<h4 class="text-truncate oneline" style="width: 610px;">
					selenium +java 多个类公用driver问题				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="u010569419" class="avatar-pic">
						<span class="namebox">
							<span class="name">u010569419</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">10-17</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						8569</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/u010569419/article/details/83115412" target="_blank" title="selenium +java 多个类公用driver问题">
						<span class="desc oneline">问题点:过久没有写selenium代码,竟然把driver公用的问题忘记了,即:每写一个测试类,执行过程当中都会新建一个窗口,这样应该说是很是不专业的。

大概想了一个方法,虽然看起来也不怎么专业,但感受…

来自: u010569419的博客



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/Maybe_ch/article/details/81482054,BlogCommendHotData_29,index_79&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/Maybe_ch/article/details/81482054" target="_blank" title="C#Winform窗口移动">
			<h4 class="text-truncate oneline" style="width: 602px;">
					C#Winform窗口移动				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="Maybe_ch" class="avatar-pic">
						<span class="namebox">
							<span class="name">Maybe_ch</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">08-07</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						33225</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/Maybe_ch/article/details/81482054" target="_blank" title="C#Winform窗口移动">
						<span class="desc oneline">在咱们将Winform自带的边框隐藏以后,咱们须要本身编写窗口的移动。

思路就是1.得到点击左键时当前鼠标的坐标 2.得到移动后鼠标的坐标 3.窗体的坐标=移动后的鼠标坐标-移动前的鼠标坐标

pr…

来自: Maybe_ch的博客



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/qq_42221334/article/details/81981504,BlogCommendHotData_30,index_80&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/qq_42221334/article/details/81981504" target="_blank" title="迅雷因版权方没法下载解决方法,附带破解不限速方法">
			<h4 class="text-truncate oneline" style="width: 602px;">
					迅雷因版权方没法下载解决方法,附带破解不限速方法				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="qq_42221334" class="avatar-pic">
						<span class="namebox">
							<span class="name">qq_42221334</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">08-23</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						39520</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/qq_42221334/article/details/81981504" target="_blank" title="迅雷因版权方没法下载解决方法,附带破解不限速方法">
						<span class="desc oneline">迅雷下载有的电影电视剧的时候会出现:应版权方要求,文件没法下载,或者显示迅雷任务包含违规内容 没法继续下载。这个是由于版权方和迅雷公司交涉,迅雷公司经过技术手段阻止了迅雷任务的下载,好比下载最近的《人...</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/qq_42221334">来自:	<span class="blog_title"> boy火巨的博客</span></a></span>
                    					</p>
		</div>
				</div>




		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/csdnnews/article/details/84750113,BlogCommendHotData_31,index_81&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/csdnnews/article/details/84750113" target="_blank" title="李飞飞为何会离职 Google?">
			<h4 class="text-truncate oneline" style="width: 610px;">
					李飞飞为何会离职 Google?				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="csdnnews" class="avatar-pic">
						<span class="namebox">
							<span class="name">csdnnews</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">12-02</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						5060</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/csdnnews/article/details/84750113" target="_blank" title="李飞飞为何会离职 Google?">
						<span class="desc oneline">


                

                

                
                
 ...</span>
					</a>
                    						<span class="blog_title_box oneline"><a target="_blank" href="https://blog.csdn.net/csdnnews">来自:	<span class="blog_title"> CSDN资讯</span></a></span>
                    					</p>
		</div>
				</div>




		<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/u010569419/article/details/84637043,BlogCommendHotData_32,index_82&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/u010569419/article/details/84637043" target="_blank" title="三分钟小课堂-----------------docker(二)建立容器">
			<h4 class="text-truncate oneline" style="width: 610px;">
					三分钟小课堂-----------------docker(二)建立容器				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="u010569419" class="avatar-pic">
						<span class="namebox">
							<span class="name">u010569419</span>
							<span class="triangle"></span>
						</span>
				</p> -->
				<p class="date-and-readNum">
					<span class="date hover-show">11-29</span>
					<span class="read-num hover-hide">
						<svg class="icon csdnc-yuedushu" aria-hidden="true">
							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-m-passwords-visible"></use>
						</svg>
						1982</span>
					</p>
				</div>
			</a>
				<p class="content" style="width: 702px;">
					<a href="https://blog.csdn.net/u010569419/article/details/84637043" target="_blank" title="三分钟小课堂-----------------docker(二)建立容器">
						<span class="desc oneline">1 &nbsp;打开centos官网

https://www.centos.org/download/

根据下图所示,查询之前版本,为何不用最新版?你能够想一想!

       滑动到第二张图所示区域,我…

来自: u010569419的博客



<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/qq_40513881/article/details/84787345,BlogCommendHotData_33,index_83&quot;}" data-flg="true">
		<div class="content" style="width: 702px;">
			<a href="https://blog.csdn.net/qq_40513881/article/details/84787345" target="_blank" title="原生js模仿jquery Scroll动画">
			<h4 class="text-truncate oneline" style="width: 610px;">
					原生js模仿jquery Scroll动画				</h4>
			<div class="info-box d-flex align-content-center">
				<!-- <p class="avatar">
						<img src="" alt="qq_405138