多线程笔记2

来源:互联网 发布:淘宝发布虚拟物品 编辑:程序博客网 时间:2024/06/07 18:45

多线程笔记2

多线程的创建方法:

第一种方式

定义类并继承thread类

重写thread类run方法,目的是未来将自定义代码存储在run方法中,让线程运行。

创建线程对象并使用strat方法(启动线程,调用run方法)


class Demo extends Thread{    public void run()    {        for (int x = 0; x < 100; x++)        {            System.out.println("Demo run.." + x);        }    }}public class ThreadDemo{    public static void main(String[] args)    {        Demo d = new Demo();        d.start();        for (int x = 0; x < 100; x++)        {            System.out.println("hello--" + x);        }    }}

在主线程执行之后,开启了一个新线程demo,然后交替获取cpu的执行权(即cpu快速切换执行每一个进程中的线程),在某一时刻,只能有一个程序在运行(多核除外)。

多线程运行行为是在互相抢夺cpu的执行权,谁抢到谁执行,执行多长时间为cpu决定,说明了多线程一个特性:随机性。如果主线程执行完毕,还要其他线程,则该进程一直存在。

如某种病毒(线程)一直抢占cpu资源导致死机。双线程如果使用多核cpu可实现同时执行(内存则出现瓶颈),但依然无法使用java控制如何切换程序(参考多核编程技术)



为什么使用thread要覆盖run方法??

Thread类用于描述线程,该类定义了一个功能,用于存储线程要运行的代码,该存储功能即为run方法里的代码。

下面程序直接调用run,则为单线程

public class ThreadDemo{    //此程序直接调用run,则为单线程    public static void main(String[] args)    {        Demo d = new Demo();        // d.start();     执行start()方法是开启线程并执行run方法。        d.run();        //仅仅执行run()方法则只是调用对象的方法,虽然创建了线程,但是没有使用.        for (int x = 0; x < 100; x++)        {            System.out.println("hello--" + x);        }    }}



原创粉丝点击