/*
在某一时刻,CPU只能执行某个进程中的某个线程(多核除外,多核即多个CPU)。为什么感觉看电视和打游戏可以同时执行?这是因为CPU在各个应用程序之间在不断快速地切换,快到你根本不会感觉出来。
而且当某个进程中有多个线程时,CPU也是在切换着执行各个线程,这样一来就会加快整个程序执行完成的速度,给人的感觉就是线程在同步执行。
现实生活中我们可以感受到的是电脑打开的应用程序越多感觉会越慢,即电脑出现卡顿的情况,这是由于CPU太繁忙,处理的相对慢了点。
进程:是一个正在执行的程序;
每一个进程执行都有一个执行顺序。该顺序是一个执行路径,或者叫一个控制单元。
进程就是为应用程序的执行分配内存空间,即将线程进行封装起来。
线程:就是进程中的一个独立的控制单元。线程在控制着进程的执行。实际上程序运行时真正执行的是线程。
进程中至少有一个线程。
JVM启动的时候会有一个进程java.exe
该进程中至少有一个线程负责java程序的执行。而且这个线程中的代码存放于main方法中。该线程称之为主线程。
扩展:其实更细节说明jvm,jvm启动不止一个程序。还有负责垃圾回收机制的线程。
*/
/*
1,如何在自定义的代码中,自定义一个线程呢?
通过对api的查找,java已经提供了对线程这类事物的描述。就是Thread类。
创建线程的第一种方法:继承Thread类。
步骤:
1,定义继承Thread类的类。
2,复写Thread类中的run方法。
目的:将自定义的代码存储在run方法。让线程运行。线程中执行的代码放在run方法中。
3,调用线程的start方法,该方法有两个作用:启动线程,调用run方法。
*/
/*
介绍几个线程中常用的方法:
1,static Thread currentThread():获取当前线程对象
2,getName():获取线程名称
设置线程名称:setName或者构造函数
*/class Demo extends Thread
{
//private String name;
Demo(String name)
{
//this.name=name;
super(name);//对线程进行重命名
}
public void run()
{
for (int i=0;i<200 ;i++ )
{
System.out.println(Thread.currentThread().getName()+" run");//getName获取线程对象的名称
}
}
}
class ThreadDemo
{
public static void main(String args[])
{
Demo d1 = new Demo("demo1");
Demo d2 = new Demo("demo2");
d1.start();//开启线程,并执行该线程的run方法。
d2.start();
//d.run();//如果是这样直接调用run方法的话,而不调用start方法,那么线程并不会开启,仅仅是调用对象方法。因为只有调用start才会开启该线程。
for (int j=0;j<200 ;j++ )
{
System.out.println("Hello World!");
}
}
}
java 线程一
原文:http://blog.csdn.net/iemdm1110/article/details/51356877