什么是多线程编程?多线程编程基础知识

  • A+
所属分类:QQ相关

如果只有一个线程,那么任务就是顺序执行的,你必须等待前面的任务完成,才能执行下一个任务。

当sleep()状态超时,join()等待线程终止或超时,或者I/O处理完毕,线程重新转入就绪状态。

Startinghellothread...Startinggoodbyethread...HelloHelloHelloHelloHelloHelloHelloHelloHelloThread-2guesses27Hello**Correct!Thread-2in102guesses.**HelloStartingthread4...HelloHello..........remainingresultproduced.线程的几个主要概念:在多线程编程时,你需要了解以下几个概念:*线程同步*线程间通信*线程死锁*线程控制:挂起、停止和恢复***多线程的使用有效利用多线程的关键是理解程序是并发执行而不是串行执行的。

自旋锁和互斥锁各有千秋,自旋锁的优点是不用线程切换,线程切换有时也是件不小的开销,缺点是一直占用cpu,适合等待时间短的任务。

如果由于程序忙于一个任务,有可能会导致屏幕变成空白,这显然需要我们的程序来处理这样的事件。

多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。

状态转化图!在这里插入图片描述(https://img-blog.csdnimg.cn/20190908092225768.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mjc2NTk3NQ==,size_16,color_FFFFFF,t_70)线程数据的传递的3种方式1.通过构造器传递:如:newMyThread01(Objecta,Objectb,Objectc)对象a,b,c就是传递给这个新建线程的数据;2.通过自定义线程中的属性或者方法传递数据比如,MyThread02这类里面有name,id,…等属性,可通过这些属性的set方法来传入数据到这个线程里面,myThread02.setName(线程01);3:通过回调函数来传递就是自定义线程类里面有其他的类作为自己的属性,再通过这个属性类的构造器,set方法来传入参数,实际就是传到了这个线程里面java关键字synchronized()同步Synchronized和Lock区别随着学习的进行我们知道在JDK1.5之前synchronized是一个重量级锁,相对于j.u.c.Lock,它会显得那么笨重,以至于我们认为它不是那么的高效而慢慢摒弃它。

如果没有找到同一优先级或更高级的线程,当前线程还继续占有CPU。

当一个类继承Thread类后,就可以在该类中覆盖run()方法,将实现线程功能的代码写入run()方法中,然后同时调用Thread类的start()方法执行线程,也就是调用run()方法。

有打造精品意识,为人踏实、工作勤奋。

***就绪状态:**当线程对象调用了start()方法之后,该线程就进入就绪状态。

使用多线程的**理由之二**是线程间方便的通信机制。

个进程可以有很多线程,每条线程并行执行不同的任务。

需要注意的是:即使程序运行在单核处理器上,也能够得到多线程编程模型的好处。

个线程的生命周期线程是一个动态执行的过程,它也有一个从产生到死亡的过程。

线程安全类除了C/C++运行时库、MFC库因为已经有处理线程安全外,其他第三方库,甚至包括STL都不是线程安全的。

规划策略决定何时切换进程,规划策略可能由操作系统或其他进程强制执行。

因此操作系统将定期的中断当前正在执行的线程,将CPU分配给在等待队列的下一个线程。

个直观印象的线程示例:usingSystem;usingSystem.Threading;namespaceThreadTest输出如下:SystemThread’sStatus:Running在这里,我们通过Thread类的静态属性CurrentThread获取了当前执行的线程,对其Name属性赋值SystemThread,最后还输出了它的当前状态(ThreadState。

不同的操作系统有不同的调度算法,程序员无法控制。

推荐《UnderstandingUnix/LinuxProgramming》,线程与进程的概念进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1–n个线程。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: