怎样创建多线程?多线程概念有哪些?

TheDisguiser 2020-06-01 21:58:40 java常见问答 8106

Java中多线程小伙伴们知道吗?这是java中的一个核心技术,它有哪些概念?又该如何实现呢?下面跟小编一起看看吧。

一、多线程的概念

1、程序

一个独立运行的内存空间,开发出来的一个应用。

2、线程和进程

一个程序就是一个进程,一个进程中至少有一个线程(main)。

线程就是一个任务,多个线程就表示多个任务[同时]执行。

3、单核和多核cpu

单核在处理多线程的时候,效率不一定高

多核比单核再处理多线程时,更加高效

4、并行和并发

并行:同一时间,多个事情同时进行。一边听歌,一边撸代码

并发:同一时间,多个人做同一件事。秒杀 1万个人同时抢100台手机

多线程结构概念图:

怎样创建多线程

二、线程的状态

1、出生状态(New)

2、可运行状态(Runnable)

3、运行状态(Running)

4、阻塞状态(Blocked)

5、死亡状态(Dead)

start():启动线程,线程从出生状态变成可运行状态,不保证立刻运行,把控制器交给了CPU调度,什么来调度了什么时候运行。

---调用下列方法进入阻塞状态

sleep():休眠

join():加入,合并线程

wait():等待(Object的方法)

synchronized:同步锁

---从运行状态回到可运行状态

yield():礼让线程

---从运行状态到死亡状态

任务完成

异常退出

stop()/destory()方法(不推荐,已废弃),建议使用标记来控制结束

三、停止线程

建议使用一个变量,如boolean类型,来控制线程结束。

四、sleep

sleep(时间毫秒)指定当前线程阻塞的毫秒数

sleep存在异常InterruptedException,一定要处理

sleep时间达到后线程进入可运行状态(就绪状态)

sleep可以模拟网络阻塞,做倒计时(计时器)

每个对象都有一把锁,sleep不会释放锁

五、线程具体实现

继承Thread类创建线程

Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。这种方式实现多线程很简单,通过自己的类直接extend Thread,并复写run()方法,就可以启动新线程并执行自己定义的run()方法。如:

public class MyThread extends Thread
{
    public void run()
    {
        System.out.println("MyThread.run()");
    }
}
MyThread myThread1 = new MyThread();
MyThread myThread2 = new MyThread();
myThread1.start();
myThread2.start();

以上就是关于多线程的所有内容了,多线程是项目开发的常用技术之一,如果还需要了解更多线程相关java常见问答知识就请关注我们网站吧。

推荐阅读:

java多线程详解,进程和线程的区别是什么?

高并发和多线程的区别在哪里?都有什么概念?

java多线程使用场景有哪些?有何作用?