Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
1、线程与进程的基本概念:
进程:同一个操作系统中执行的一个子程序,包含了三部分虚拟CPU、代码、数据。
多进程:同一个操作系统中执行的多个并行的子程序。可以提高cpu的使用率。
线程:在同一个进程当中执行的某个单一的子程序流。
多线程:同一个进程当中并发执行的多个子程序流。可以提高cpu的使用率。
进程与线程的区别:
进程有独立的进程空间,进程中的数据存放空间(堆空间和栈空间)是独立的。
线程的堆空间是共享的,栈空间是独立的,线程消耗的资源也比进程小,相互之间可以影响的。
注意:
只有运行状态的线程才有机会执行代码,主线程的中止不会影响其他的正在运行中的线程,主线程中止也就是main()方法退出了。只有进程中的所有线程都中止时,进程(JVM进程)才会退出,只要有线程没有中止,进程就不会退出。 操作系统决定线程是否有优先级,独占式的操作系统中系统会有优先级的概念,共享式的操作系统则不会有优先级的。在线程的内部,程序依然顺序执行。
2、创建线程:
现阶段最常用的有两种创建多线程的方法:第一种是通过继承Thread类来创建,第二种是通过实现Runnable接口来创建。
一、
写一个类,继承Thread类,覆盖Thread类中继承来的run()方法,这样就写好了自定义的线程类。
继承java.lang.Thread类:
class MyThread extends Thread{
public void run(){//覆盖run(),线程体方法,自身其实就是普通的方法
.......
}
}
小编推荐一个学Java的学习裙【 六五零,五五四,六零七 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
启动线程:
public class TestThread{
public static void main(){
Thread t1=new Mythread();
T1.start();//调用start()来启动线程,线程启动方法,向线程调度器说明当前线程已经准备好了,是一种可运行状态
}
}
二、
写一个类,实现Runable接口,实现其中的run()方法。这种方法写好的类的对象需要作为线程类创建对象时构造方法的参数。
实现java.lang.Runnable接口:
Class MyThread implements Runnable{
public void run(){
}
}
启动线程:
public class TestThread{
public static void main(){
Runnable myThread = new MyThread();
Thread t = new Thread(myThread);
t.start();
}
}
注意:在上面两个程序中我们可以看到启动线程是通过start()方法来启动的,而不是通过调用run()方法来启动,用run()方法是一种错误的启动线程的方法。
当然还有其他创建线程的方法,例如通过线程池,暂且不做深究!
小编推荐一个学Java的学习裙【 六五零,五五四,六零七 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
给你Java学习路线:html-css-js-jq-javase-数据库-jsp-servlet-Struts2-hibernate-mybatis-spring4-springmvc-ssh-ssm