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
- java多线程编程基础讲解
- Java多线程编程讲解
- c/c++: 多线程编程基础讲解
- c/c++: 多线程编程基础讲解
- Java多线程编程基础
- Java多线程编程基础
- Java基础-多线程编程
- Java 多线程编程基础
- JAVA socket编程基础讲解
- Java多线程编程要点 讲解 (一)
- JAVA多线程编程基础1
- Java多线程编程 - 基础篇
- Java基础13:多线程编程
- 【Java基础】(04)多线程编程
- Java基础-多线程下载(网络编程-多线程)
- Java基础编程白话讲解分享
- c/c++: 多线程编程基础讲解(一)
- c/c++: 多线程编程基础讲解(二)
- 老程序员的python快速学习之旅
- 【文智背后的奥秘】系列篇——关键词智能提取
- hibernate 返回非受管实体
- Iterator去除一个List中与另一个List相同的元素,或者Iterator按条件去除元素
- android AES加密
- java多线程编程基础讲解
- 运行时和编译时异常
- PAT(Basic Level):数素数
- Android studio 更新问题
- Android Studio中Java控制台中文输出乱码
- 深度学习的几种库
- Elasticsearch索引重建(Rebuild)
- 位域相关
- Maven不让编译: No goals have been specified for this build. You must specify a valid lifecy