java中的多线程
来源:互联网 发布:sql注入测试工具有哪些 编辑:程序博客网 时间:2024/06/17 20:47
s1.基本定义
1.1进程:正在进行中的程序。其实就是一个应用程序运行时的内存分配空间;
1.2线程:又称为轻型进程,是分配资源和程序运行的最小单位。进程负责的就是应用程序的空间标示,而线程负责的是应用程序的执行顺序。
线程的划分小于进程,线程隶属于某个进程。 进程是程序的一种动态形式,是CPU、内存等资源占用的基本单位,而线程是不能占有这些资源的。 进程之间相互独立,通信比较困难,而线程之间共享一块内存区域,通信比较方便。 进程在执行的过程中,包含比较固定的入口,执行顺序,出口,而线程的这些过程会被应用程序所控制。
2.在Java语言中,多线程是的机制是通过虚拟CPU实现的;通过java.lang.Thread类可以实现虚拟CPU的功能。
- 返回当前线程的名称的方法:Thread.currentThread().getName()、
- 线程的名称是由:Thread-编号定义的。编号从0开始;
- 线程要运行的代码都要统一存放在run()方法中。
- 指定start()方法开启线程(1.启动了线程 2.让JVM调用了run()方法)
3.实现多线程的方法
1.继承Thread类
2.实现Runnable接口
3.使用Executor框架来创建线程池
4.实现Callable接口
1.继承Thread类
package dong.test;public class Test extends Thread{ Test(String name){ super(name); } @Override public void run() { for(int i=10;i>0;i--){ try { System.out.println("left time:"+i); Thread.sleep(1000); } catch (InterruptedException e) { System.out.println(e.getMessage()); } } System.out.println("game is over!"); } public static void main(String[] args){ Test test = new Test("Thread Test"); test.start();//启动线程 }}
运行结果:
left time:10
left time:9
left time:8
left time:7
left time:6
left time:5
left time:4
left time:3
left time:2
left time:1
game is over!
2.实现Runnable接口
package dong.test;public class Test implements Runnable{ @Override public void run() { for(int i=10;i>0;i--){ try { System.out.println("left time:"+i); Thread.sleep(1000); } catch (InterruptedException e) { System.out.println(e.getMessage()); } } System.out.println("game is over!"); } public static void main(String[] args){ Test test = new Test();//创建一个线程类实例 Thread thread = new Thread(test);//以上面创建的线程类实例创建一个Thread实例 thread.start();//启动线程 }}
运行结果:
left time:10
left time:9
left time:8
left time:7
left time:6
left time:5
left time:4
left time:3
left time:2
left time:1
game is over!
代码1
package dong.test;public class TheadTest { public static void main(String[] args) { Runnable runner = new Runnable() { @Override public void run() { System.out.println("foo"); } }; Thread t = new Thread(runner); t.start(); //t.run(); System.out.println("boo"); }}
1.运行结果:
boo
foo
代码2
package dong.test;public class TheadTest { public static void main(String[] args) { Runnable runner = new Runnable() { @Override public void run() { System.out.println("foo"); } }; Thread t = new Thread(runner);// t.start(); t.run(); System.out.println("boo"); }}
2.运行结果:
foo
boo
调用start()方法后,线程会被放到等待队列中,等待CPU的调度,并不一定马上开始执行,只是将这个线程置于就绪(Runnable)的状态;然后通过JVM分配CPU执行时间,此时线程Thread才会调用run()方法。
代码2中是手动调用run()方法;这样和调用普通的方法没有什么区别;
- Java 程序中的多线程
- Java 程序中的多线程
- Java 程序中的多线程
- Java程序中的多线程
- java中的多线程
- Java中的多线程(一)
- Java 程序中的多线程
- Java中的多线程程序设计
- Java 程序中的多线程
- Java 程序中的多线程
- Java 程序中的多线程
- Java 程序中的多线程
- Java 程序中的多线程
- 再忆Java中的多线程
- Java中的多线程
- Java中的多线程
- Java中的多线程编程
- Java中的多线程编程
- Oracle sqlplus: command not found
- 【Unity3D】GIF与序列帧动画的使用
- tomcat集群
- Linux 文件内容查询 —— cat less more touch
- 信息熵——Information Entropy
- java中的多线程
- JSP中的指令
- 实习时 自己项目组的项目所需要了解的以及如何提高自己
- 归并排序详解(python实现)
- webpack打包js调试配置
- 单链表排序----快排 & 归并排序
- 插入排序
- Linux怎么取消软链接
- 关于String类