如程涛老师和我们介绍的一样,诗剑向我们阐述了目前计算机硬件架构已经成为CPU性能提升的瓶颈,所以需要更多的依靠软件编程方面的改进和提升来实现对CPU资源更大程度的利用,多线程就是一种非常合适的方式。对于这些知识,我们简单了解即可,关键是我们要加强对多线程编程的重视程度,努力将这部分的内容学好。
在基础篇一中,我们要学习区分两个基本的概念,线程和线程对象。诗剑在这节中讲的比较简单,不知道大家是否能够完全理解,下面是我对这两个概念的理解,希望能够能够给大家提供一些参考。
下面是一个非常简单的自定义线程的例子:
class MyThread extends Thread{
public void run(){
for(int i = 0;i< 100; i++){
System.out.println(i);
}
}
}
class TestThread{
public static void main(String[] args){
Thread t = new MyThread();
t.start();
}
}
在这个例子中,很显然我们自定义了一个类,继承了Thread类,我们在一个测试类中创建了一个MyThread类的对象,与Thread类型变量t连接。这些相信大家都能明白,在这里,变量t也就是所谓的线程对象,当我们调用了t.start()之后,便真正启动了一个线程。线程对象指的是一个变量(对象),而线程是一个过程(也可以说是线程对象启动后到结束这段时间内的行为)。
对于实现Runnable接口的类来说,如:
class MyThread implements Runnable{
public void run(){
for(int i = 0;i< 100; i++){
System.out.println(i);
}
}
}
class TestThread{
public static void main(String[] args){
Runnable r = new MyThread();
Thread t = new Thread(r);
t.start();
}
}
线程对象指的是哪个,r还是t?r是Runnable对象,而t是Thread对象,如果按照线程对象能够启动线程来看,t应该是线程对象,而r不是。
关于文中所谓的单线程,也就是我们最初学习时编写的HelloWorld那样的程序,当我们编译运行一个简单的Java程序时,系统将会启动JVM,为程序分配内存,启动一个名称为main(就是我们通常使用的main()方法)的主线程(它在任何一个需要入口的程序中都会出现,且是一个程序中最先启动的线程),创建相应的变量和对象,并按照主线程中各个操作的顺序来一步步执行。主线程和一般线程的唯一区别就是:主线程不是通过线程对象来启动,而一般线程都需要线程对象调用start方法来启动。
(以上纯属个人理解,难免有缺漏,如有不同意见和建议,请积极提出,不胜感激)
在基础篇一中,我们要学习区分两个基本的概念,线程和线程对象。诗剑在这节中讲的比较简单,不知道大家是否能够完全理解,下面是我对这两个概念的理解,希望能够能够给大家提供一些参考。
下面是一个非常简单的自定义线程的例子:
class MyThread extends Thread{
public void run(){
for(int i = 0;i< 100; i++){
System.out.println(i);
}
}
}
class TestThread{
public static void main(String[] args){
Thread t = new MyThread();
t.start();
}
}
在这个例子中,很显然我们自定义了一个类,继承了Thread类,我们在一个测试类中创建了一个MyThread类的对象,与Thread类型变量t连接。这些相信大家都能明白,在这里,变量t也就是所谓的线程对象,当我们调用了t.start()之后,便真正启动了一个线程。线程对象指的是一个变量(对象),而线程是一个过程(也可以说是线程对象启动后到结束这段时间内的行为)。
对于实现Runnable接口的类来说,如:
class MyThread implements Runnable{
public void run(){
for(int i = 0;i< 100; i++){
System.out.println(i);
}
}
}
class TestThread{
public static void main(String[] args){
Runnable r = new MyThread();
Thread t = new Thread(r);
t.start();
}
}
线程对象指的是哪个,r还是t?r是Runnable对象,而t是Thread对象,如果按照线程对象能够启动线程来看,t应该是线程对象,而r不是。
关于文中所谓的单线程,也就是我们最初学习时编写的HelloWorld那样的程序,当我们编译运行一个简单的Java程序时,系统将会启动JVM,为程序分配内存,启动一个名称为main(就是我们通常使用的main()方法)的主线程(它在任何一个需要入口的程序中都会出现,且是一个程序中最先启动的线程),创建相应的变量和对象,并按照主线程中各个操作的顺序来一步步执行。主线程和一般线程的唯一区别就是:主线程不是通过线程对象来启动,而一般线程都需要线程对象调用start方法来启动。
(以上纯属个人理解,难免有缺漏,如有不同意见和建议,请积极提出,不胜感激)