java中进行多线程编程,操作系统提供了一组关于线程的API(C语言风格),java对于这组API进一步封装之后,就成了
Thread类,Thread类来表示/操作线程
总结上面的这段话就是,我们在java中进行多线程编程,需要用到Thread类来和线程打交道
创建好的
Thread实例和操作系统中的线程是一一对应的
那下面我们就来说下Thread类的基本用法
通过Thread类创建线程写法有很多种
第一种
第一步:创建子类继承自Thread,并重写run方法 run方法--->描述了这个线程内部要执行哪些代码
第二步:创建 MyThread 类的实例
第三步:main方法中调用start方法
调用这里的start()才是真正在系统中创建了线程哦
![](https://i-blog.csdnimg.cn/blog_migrate/b8670164d5ab925be440e42deabed650.png)
我们需要知道的是:
一个java进程中,至少会有一个线程---->调用main方法的线程(这是自带的,不是我们自己手动创建的)
那我们
自己创建的线程就和自动创建的main线程是并发执行的(此处的并发=并行+并发)
看下面这个例子,在创建的基础上,进行了两个线程的并发执行
注意我们这里的两个线程都进行了循环,我们在循环里加了Thread.sleep(),这个代表强制这个线程每打印一遍就休眠一会儿(进入阻塞状态),(try catch的出现是因为写sleep的时候会有异常,为了去掉异常加了他俩)
注意,线程之间的调度顺序(也就是每次先打印谁)是随机的
![](https://i-blog.csdnimg.cn/blog_migrate/d0c12fd05b7f20cae85c1e858c0ef9ea.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c872cd10be86769b129eb7a85c89b118.png)
Thread类创建线程的方法
第二种
1.创建一个类,实现Runnable接口,
2.创建 Thread 类实例, 调用 Thread 的构造方法时将 Runnable 对象作为 target 参数.
3.调用 start 方法
![](https://i-blog.csdnimg.cn/blog_migrate/f2d3af6b8b78f4f3d2991a54e6ab848a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/728010b75f93b23d918cd1388e0254ea.png)
第三种(是第一种的翻版)--->使用了匿名内部类继承自Thread类
![](https://i-blog.csdnimg.cn/blog_migrate/fb95c17ee755d896c4ca0221de8d6576.png)