进程就是一个正在进行中的程序,由操作系统分配一个内存空间,不同的进程之间不能直接实现数据的共享。
而在一个进程中,还可以同时进行多件事情,这每一件事情便是一个线程。
在JAVA中,Thread便是线程类,它的使用分以下几个步骤:
首先,创建一个类让他继承Thread,那么这个类便是一个线程类,也就是这个类的对象可以用来同时干多件事情。
然后,在这个线程类中重写父类Thread的run()方法,也就是在run里面写上这个线程是干什么的,启动之后该自动完成那些任务。
最后当需要使用线程时,就创建这个线程的对象,由于线程的run()方法是不能直接调用的,所以让对象调用线程的start()方法,这时线程便会在此程序的进程内存中被分配一个内存空间,来自动执行线程的run()方法。
对于怎么让线程停止和暂停,java中原本提供了一些方法,不过现在都不能用了,所以我们采用的是在线程的run()方法中做一些处理来达到线程停止和暂停的效果。
线程的停止:
首先明白,当线程的run()方法结束,那么这个线程也就结束了,所以一般的线程在run()方法中都会设有一个死循环while(true){};这样就可以让线程的run()方法一直执行不完,线程便一直在进行,所以要让线程停止,便需要将这个死循环结束,所以一开始在while的条件里面不应该直接写true,而是写一个boolean变量,这样我们就可以通过控制这个变量的值,来控制线程的结束了。
线程的暂停:
暂停也是将线程停下来,但是暂停之后还需要能够继续,如果继续照上面让线程停止的方法的话,run()方法结束这个线程也就没了,再将boolean改回来也不会继续执行了,所以我们采用的是不结束掉线程的run()方法,也就是说死循环继续执行,而我们要线程做的事不直接写在死循环里面,而是用一个if()语句扩起来,在if语句的条件中设置一个控制暂停的boolean变量,也就是说,如果暂停了,那么if语句便不执行,那么线程设定的操作也就不执行,线程便看起来暂停了,然而实际上,线程的run()方法还没听,死循环一直在进行,只是没有做事而已,这样的话,当我们想要继续的时候,只要将if的条件变量改为true,那么循环中又开始执行if语句中的操作,那么线程就又开始做事了。通过这样的控制也就达到了暂停继续的效果。