多线程(2)-java线程的创建与启动
来源:互联网 发布:崩坏3矩阵探索buff 编辑:程序博客网 时间:2024/04/23 19:04
java线程的创建
(1)定义一个类继承于Thread,直接new一个实例即可
(2)定义一个类实现Runnable接口,new一个Thread实例,传入Runnable
Thread thread = new Thread(new Runnable());
(3)重写run()方法。
java线程的启动
在线程的Thread对象上调用start()方法,而不是run()或者别的方法。
在调用start()方法之前:线程处于新状态中,新状态指有一个Thread对象,但还没有一个真正的线程。
在调用start()方法之后:发生了一系列复杂的事情
启动新的执行线程(具有新的调用栈);
该线程从新状态转移到可运行状态;
当该线程获得机会执行时,其目标run()方法将运行。
注意:对Java来说,run()方法没有任何特别之处。像main()方法一样,它只是新线程知道调用的方法名称(和签名)。因此,在Runnable上或者Thread上调用run方法是合法的。但并不启动新的线程。
几点说明
(1)当线程目标run()方法结束时该线程完成
(2)一旦线程启动,它就永远不能再重新启动。只有一个新的线程可以被启动,并且只能一次。一个可运行的线程或死线程可以被重新启动。
(3)线程的调度是JVM的一部分,在一个CPU的机器上上,实际上一次只能运行一个线程。一次只有一个线程栈执行。JVM线程调度程序决定实际运行哪个处于可运行状态的线程。
(4)尽管我们没有无法控制线程调度程序,但可以通过别的方式来影响线程调度的方式。
一个例子
package com.ni;public class MyThreadDemo extends Thread { @Override public void run() { super.run(); for (int i = 0; i < 20; i++) { System.out.println("MyThread--" + i); } }}
package com.ni;public class MyRunnableDemo implements Runnable { @Override public void run() { for (int i = 0; i < 20; i++) { System.out.println("MyRunnable--" + i); } }}
package com.ni;public class Main { public static void main(String[] args) { Thread thread01 = new MyThreadDemo(); thread01.start(); Thread thread02 = new Thread(new MyRunnableDemo()); thread02.start(); }}
运行结果(每次运行结果不同)
MyThread--0MyThread--1MyThread--2MyThread--3MyThread--4MyThread--5MyThread--6MyThread--7MyThread--8MyThread--9MyRunnable--0MyThread--10MyRunnable--1MyThread--11MyRunnable--2MyThread--12MyRunnable--3MyThread--13MyRunnable--4MyThread--14MyRunnable--5MyThread--15MyRunnable--6MyThread--16MyRunnable--7MyThread--17MyRunnable--8MyThread--18MyRunnable--9MyThread--19MyRunnable--10MyRunnable--11MyRunnable--12MyRunnable--13MyRunnable--14MyRunnable--15MyRunnable--16MyRunnable--17MyRunnable--18MyRunnable--19
0 0
- 多线程(2)-java线程的创建与启动
- 初见Java多线程(二、线程的创建与启动)
- java并发多线程,线程的创建启动
- 多线程-2-线程创建与启动
- java多线程2(线程的创建方式以及启动)
- JAVA线程的创建与启动线程
- java 线程的创建与启动
- JAVA线程的创建与启动
- Java中的线程的创建与启动
- Java多线程(2):创建与启动
- 多线程示例(一) 线程的创建与启动
- 多线程(1)- 线程的创建与启动
- Java线程-2:创建与启动
- Java基础-多线程-①线程的创建和启动
- Java基础-多线程-①线程的创建和启动
- Java基础-多线程-①线程的创建和启动
- java多线程:创建与启动
- Java线程:创建与启动
- RPC小例子解决Exception in thread "main" java.lang.reflect.UndeclaredThrowableException
- Java集合(三):Queue队列
- 如何在 CentOS 7 上安装 Percona服务器
- 友元、派生、public、private、protected访问权限
- 在项目中解决的一个死锁问题
- 多线程(2)-java线程的创建与启动
- 牛客网-华为机试在线训练-3.数字颠倒
- Hyper-V虚机开机显示无法初始化解决方法,改所在文件夹权限
- 修改Oracle Virtual Box中vdi的大小
- Android中View的事件体系(2)——View滑动与事件分发
- Hadoop安全机制
- DBUtils实现增删改查
- 表单验证插件jQuery.validate 介绍+快速入门案例
- Qt for Android