/*
* 1.定义类继承Thread类。
* 2.复写Thread类中run方法:为了将自定义的代码存储在run方法中,让线程运行。
* 明确一点,在某一时刻,只能有一个程序在运行。(多核除外)
* cpu在做着快速的切换,以达到看上去是同时运行效果。
* 我们可以形象把多线程的运行行为在互相抢夺cpu的执行权。
* Thread类用于描述线程。
* 该类就定义了一个功能,用于存储线程要运行的代码,该存储功能就是run方法。
* 通过this或者静态方法currentThread()方法获得当前对象。
* 设置线程名称:setName方法或者构造函数。
{
Demo (String name)
{
super(name);
}
public void run()
{
for(int x=0;x<60;x++)
System.out.println(Thread.currentThread().getName()+"---demo run-----"+x);
}
}
public class ThreadDemo {
public static void main(String args[])
{
Demo d=new Demo("one");
Demo d1=new Demo("two");//创建好一个线程。
d.start();//开启线程,并执行run方法。
d1.start();
// d.run();//仅仅是对象调用方法,线程创建了,自定义线程并没有执行,而是主线程在运行run方法。
for(int x=0;x<60;x++)
System.out.println("hello world!--"+x);
}
}
* 1.进程:是一个正在执行中的程序。
* 2.每一个进程执行都有一个执行顺序,该顺序都有一个执行路径,或者叫一个控制单元。
* 3.线程:进程中的一个独立的控制单元,线程控制着进程的执行。
* 4.一个进程中至少有一个线程。
* 5.Java VM启动的时候会有一个进程java.exe。
* 6.该进程中至少有一个线程负责java程序的执行。而且这个线程运行的代码存在于main方法中,该线程称之为主线程。
* 7.扩展:JVM启动不止一个线程,还有负责垃圾回收机制的线程。
* 8.多线程存在的意义:提高程序执行的效率。
* 9.如何在自定义的代码中,自定义一个线程呢?
* 通过对api的查找,java已经提供了对线程这类食物的描述,就是Thread类。
* 10.创建线程的第一种方式:继承Thread类.
* 步骤:* 1.定义类继承Thread类。
* 2.复写Thread类中run方法:为了将自定义的代码存储在run方法中,让线程运行。
* 3.调用线程的start方法,该方法有两个作用:a.启动线程。b.调用run方法。
* 明确一点,在某一时刻,只能有一个程序在运行。(多核除外)
* cpu在做着快速的切换,以达到看上去是同时运行效果。
* 我们可以形象把多线程的运行行为在互相抢夺cpu的执行权。
* 这是多线程的一个特性:随机性,谁抢到谁执行,至于执行多长,cpu说的算。
* Thread类用于描述线程。
* 该类就定义了一个功能,用于存储线程要运行的代码,该存储功能就是run方法。
* 也就是说Thread类中的run方法,用于存储线程要运行的代码。
* 通过this或者静态方法currentThread()方法获得当前对象。
* 设置线程名称:setName方法或者构造函数。
*/
{
Demo (String name)
{
super(name);
}
public void run()
{
for(int x=0;x<60;x++)
System.out.println(Thread.currentThread().getName()+"---demo run-----"+x);
}
}
public class ThreadDemo {
public static void main(String args[])
{
Demo d=new Demo("one");
Demo d1=new Demo("two");//创建好一个线程。
d.start();//开启线程,并执行run方法。
d1.start();
// d.run();//仅仅是对象调用方法,线程创建了,自定义线程并没有执行,而是主线程在运行run方法。
for(int x=0;x<60;x++)
System.out.println("hello world!--"+x);
}
}