java多线程编程基础讲解

来源:互联网 发布:linux用户和组管理 编辑:程序博客网 时间:2024/04/29 00:40

讲解java多线程的问题之前,我们需要了解两个概念:

1.进程:可以先简单理解为,就是我们开发的完成某种部分功能的程序代码在CPU中跑起来之后的样子。所以进程应该是操作系统分配的内存空间+1个或多个线程组成的。

2.线程:可以理解为组成进程的一些代码流,这些代码流跑起来就叫线程。线程不能单独存在,它必须依托线程。

举个例子:

public class ArrayListTest {public static void main(String[] args) {ArrayList<String> s = new ArrayList<String>();s.add("first");s.add("second");s.add(1, "third");for(String k : s){System.out.println(k);}}}
上面代码跑起来就叫一个进程,功能是打印出一个ArrayList集合内容。显然,这个进程只有一个线程。
现在想同时让这个进程打印好几种内容,每种内容由一个线程去完成。

我这里是用实现Runable接口的方式实现多线程编程的。

//创建一个Thread1线程类public class Thread1 implements Runnable {<span style="white-space:pre"></span>@Override<span style="white-space:pre"></span>public void run() {<span style="white-space:pre"></span>for(int i=0;i<5;i++){<span style="white-space:pre"></span>System.out.println("Thread1: 线程Thread1执行的内容!"+i);<span style="white-space:pre"></span>}<span style="white-space:pre"></span><span style="white-space:pre"></span>}}
//创建一个Thread2线程类public class Thread2 implements Runnable{<span style="white-space:pre"></span>@Override<span style="white-space:pre"></span>public void run() {<span style="white-space:pre"></span>for(int i=0;i<5;i++){<span style="white-space:pre"></span>System.out.println("Thread2: 线程Thread2执行的内容!"+i);<span style="white-space:pre"></span>}<span style="white-space:pre"></span>}}
然后在主类中执行定义的两个线程,让这两个线程同时执行,完成各自的功能任务。

public class RunThread {public static void main(String[] args) {//定义线程要执行的目标对象Thread1 th1 = new Thread1();Thread2 th2 = new Thread2();//创建线程,设置线程执行对象和线程名称Thread ta = new Thread(th1,"A");Thread tb = new Thread(th2,"B");//执行线程ta.start();tb.start();}}
运行主类之后,我们可以看到,两个线程ta,tb都得到了执行,而且每次打印顺序都不一样,因为两个线程再主进程中是并发执行的。






0 0