多线程
Posted seedss
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程相关的知识,希望对你有一定的参考价值。
进程vs线程:
进程:每个程序被运行加载到内存之后,都会被操作系统作为一个进程,进程是处于运行过程中的程序,是具有独立功能,被操作系统进行资源分配和调度的独立单元。
线程:一个进程里面可以拥有多个线程,线程拥有自己的堆栈,程序计数器和自己的局部变量,但是不拥有系统资源,多个线程共享进程的系统资源。
创建线程的三种方式:
1.继承Thread类创建线程类
继承Thread类,重写run()方法,该run()方法就代表程序需要完成的任务。创建Thread子类的实例,即创建线程对象。然后通过start()方法启动线程。
1 public class MyThread extends Thread { 2 private int count; 3 4 @Override 5 public void run() { 6 7 for (; count < 100; count ++) { 8 System.out.println(getName() + "---" + count); 9 } 10 } 11 12 public static void main(String[] args) { 13 for (int i = 0; i < 100; i++) { 14 System.out.println(Thread.currentThread().getName() + i); 15 if (i == 20) { 16 new MyThread().start(); 17 new MyThread().start(); 18 } 19 } 20 } 21 }
2.实现Runnable接口来创建并启动多线程
继承Runnable接口,并重写该接口的run()方法。创建Runnable实现类的实例,并以此实例作为Thread的target来创建Thread类对象,该Thread类对象才是真正的多线程对象。然后调用start()方法来执行该Thread实例线程。
示例:
1 public class MyRunableThread implements Runnable { 2 3 private int count = 0; 4 5 @Override 6 public void run() { 7 for (; count < 20; count ++){ 8 System.out.println(Thread.currentThread().getName() + "--" + count); 9 } 10 } 11 12 public static void main(String[] args){ 13 for (int i=0; i<30; i++){ 14 System.out.println(Thread.currentThread().getName() + "--" + i); 15 if (i == 20){ 16 MyRunableThread myRunableThread = new MyRunableThread(); 17 new Thread(myRunableThread, "子线程1").start(); 18 new Thread(myRunableThread, "子线程2").start(); 19 } 20 } 21 } 22 }
以上是关于多线程的主要内容,如果未能解决你的问题,请参考以下文章