楼主决定要好好地把Java的多线程给看一下,所以特地来写下博客,内容大部分都是摘抄自网上看到的资料或者书籍,能给出链接的我会给出链接。嗯,希望大家跟楼主一起抱团,加油加油(^ω^)也欢迎关注楼楼的个人博客主页www.anycodex.com。
1.多线程相关概念
程序:为了完成特定任务,用某种语言编写的一组指令集合。
进程:运行中的程序,系统跳读和资源分配的一个独立单位,操作系统会为每一个进程分配一段内存空间。
线程:比进程更小的执行单位,每一个进程可能有多个线程,线程需要放到一个进程中才能执行。线程由程序负责管理,而进程由系统进行调度。
多线程:并行执行多条指令,将CPU时间片按照调度算法分配给各个线程,实际上是分时执行,知识切换时间短,用户感觉在同时。
2.线程的生命周期
如图所示:
3.线程的创建
Java中线程创建有两种方式:继承Thread类创建、实现Runnable接口
- 创建流程
- 代码演示
方法一:继承Thread类来创建
package net.mindview.util; //第一步、继承Thread类 class MyThreadRunning extends Thread { //构造函数 public MyThreadRunning() { super("My Thread"); //System.out.println("新建一个线程" + getName()); } //第二步、重写run方法 public void run() { for (int i = 0; i <= 3; i++) { System.out.println("新建一个线程" + getName()+i); try { sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } public class MyThread { public static void main(String[] args) { //第三步、实例化自定义的线程类对象 MyThreadRunning mtr = new MyThreadRunning(); //第四步、调用start方法从而启动run方法 mtr.start(); } }
运行结果:
新建一个线程My Thread0
新建一个线程My Thread1
新建一个线程My Thread2
新建一个线程My Thread3
方法二:实现Runnable接口实现
package net.mindview.util; //第一步、实现Runnable接口 class MyThreadRunning implements Runnable { //第二步、重写run方法 public void run() { for (int i = 0; i <= 3; i++) { System.out.println("新建一个线程" + Thread.currentThread().getName() + i); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } public class MyThread { public static void main(String[] args) { //第三步、实例化自定义的线程类对象 MyThreadRunning mtr = new MyThreadRunning(); //第四步、实例化一个Thread类对象并将自定义的线程类对象作为参数传入,后面一个参数为线程名 Thread thread = new Thread(mtr, "My Thread"); //第五步、调用start方法启动线程 thread.start(); } }
运行结果:
新建一个线程My Thread0
新建一个线程My Thread1
新建一个线程My Thread2
新建一个线程My Thread3
- 两种方法的对比
如果是继承Thread类,那么该类就不能继承其他类了;
实现Runnable接口,并不影响继承其他类。
总结:这一篇就总结到这里了,怎么样,东西应该大都懂了吧?下篇继续哦,内容是多线程的控制、线程的优先级和线程的调度。加油加油加油(^ω^)
参考链接:http://blog.csdn.net/coder_pig/article/details/44284423
时间: 2024-11-10 15:07:43