Java多线程的概念特性线程的创建方式以及线程的常用方法
Posted JIANGJIZE1999
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java多线程的概念特性线程的创建方式以及线程的常用方法相关的知识,希望对你有一定的参考价值。
1.线程的概念
线程和进程的区别:
进程是系统分配资源的最小单位,线程是系统调度的最小单位。
一个进程内的线程之间是可以共享资源的。
每个进程至少有一个线程存在,即主线程。
注:
每个进程至少有一个线程存在,即主线程(系统级别的,C语言的主线程)
java级别的主线程(自己写的入口函数main方法(可以没有这个线程)
对java进程来说,至少有一个非守护线程还没终止,进程就不会结束
2.线程的特性
在后面线程的安全性会详细介绍
1.原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。
2.可见性:当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。
3.有序性:程序执行的顺序按照代码的先后顺序执行。
3.线程的创建方式
<1>继承Thread类
class MyThread extends Thread{
@Override
public void run() {
System.out.println("继承Thread类创建线程");
}
}
public static void main(String[] args) {
//1.继承Thread类创建线程
MyThread t=new MyThread();
t.start();
}
<2>实现Runnable接口
将MyRunnable对象作为任务传入Thread中
class MyRunnable implements Runnable{
@Override
public void run() {
System.out.println("继承Runnable接口,创建描述任务对象,实现多线程");
}
}
public static void main(String[] args) {
//2.实现Runnable接口
Thread t1=new Thread(new MyRunnable());
t1.start();
}
2.使用匿名内部类实现
Thread t2=new Thread(new Runnable() {
@Override
public void run() {
System.out.println("使用Runnable接口,创建匿名内部类实现");
}
});
t2.start();
线程的常用方法
1.构造方法和属性的获取方法
构造方法:
Thread() 创建线程对象
Thread(Runnable target) 使用Runnable对象创建线程对象
Thread(String name) 创建线程对象,并命名
Thread(Runnable target,String name) 使用Runnable对象创建线程对象,并命名
属性的获取方法:
属性 | 获取方法 |
---|---|
ID | getId() |
名称 | getName() |
状态 | getState() |
优先级 | getPriority() |
是否后台线程 | isDaemon() |
是否存活 | isAlive() |
是否被中断 | isInterrupted() |
2.常用方法
run()和start()
start();方法:启动线程
run();方法:覆写 run 方法是提供给线程要做的事情的指令清单
start()和run()的区别:见代码
public class Thread_Run_VS_Start {
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
while (true){
}
}
}).run();
/**
* main线程直接调用Thread对象的run方法会直接在main线程
* 运行Thread对象的run()方法---->传入的runnable对象.run()
* 结果,main线程直接运行while(true)
*
* start()是启动一个线程,调用新线程的while(true)方法
* 对比通过start()调用的结果区别
*/
new Thread(new Runnable() {
@Override
public void run() {
while (true){
}
}
}).start();
}
}
以上是关于Java多线程的概念特性线程的创建方式以及线程的常用方法的主要内容,如果未能解决你的问题,请参考以下文章