线程和进程的区别、什么是多线程、如何创建线程、线程的状态、线程的方法、线程同步的方式

本文介绍了Java中的线程与进程的区别,多线程的概念及其优势,展示了通过继承Thread类和实现Runnable接口两种方式创建线程的示例。还详细阐述了线程的状态转换,并列举了线程的常用方法如设置优先级、休眠、中断等。最后讨论了线程同步的重要方法,包括synchronized关键字的使用方式。
摘要由CSDN通过智能技术生成

一.线程和进程的区别

1.进程:进程是引用程序执行的实例,有独立的内存空间和系统资源。

2.线程:线程是CPU调度和分派的基本单位,进程中执行运算的最小单位,可完成一个独立的顺序控制流程。

二.什么是多线程?

1.如果在一个进程中同时运行了多个线程,用来完成不同的工作,则称之为“多线程”。

2.多个线程交替占用CPU资源,而非真正的并行执行

多线程的好处是什么?

  • 充分利用CPU的资源
  • 简化编程模型
  • 带来良好的用户体验

三.如何创建线程?

在Java中创建线程有两中常用方式:

1.继承Thread类:编写简单,可直接操作线程,使用与单继承。

/*
*定义MyThread类继承Thread类
*重写run()方法,编写线程执行体
*创建线程对象,调用start()方法启动线程
*/
public class MyThread extends Thread{
    //重写run()方法
	public void run(){
		for(int i=1;i<100;i++){			
        System.out.println(Thread.currentThread().getName()+":"+i);
        }
    }
}
//测试类
public static void main(String[] args) {
		MyThread thread = new MyThread();
		thread.start(); //启动线程}
}

2.实现Runnable接口:避免单继承的局限性,便于共享资源。

/*定义MyRunnable类实现Runnable接口
*实现run()方法,编写线程执行体
*创建线程对象,调用start()方法启动线程
*/
public class MyRunnable implements Runnable{
	public void run(){
		for(int i=1;i<100;i++){			
        System.out.println(Thread.currentThread().getName()+":"+i);
        }
    }
}
//测试类
public static void main(String[] args) {
		MyRunnable myRunnable = new MyRunnable();
		Thread myThread = new Thread(myRunnable);	
		thread.start(); //启动线程}
}

注意:无论是继承Thread还是实现Runnable接口,都需要重写run()方法。Runnable接口中没有start()方法,所有需要创建Thread对象调用start()方法来启动线程。一般情况推荐使用Runnable接口方式创建线程。

3.使用线程的步骤:

四.线程的状态有哪些?

 创建状态→就绪状态→运行状态→阻塞状态→死亡状态

 五.线程的常用方法(也称之为线程的调度:指按照特定机制为多个线程分配CPU的使用权)

方       法

 说       明

setPriority(int  newPriority)

更改线程的优先级

static void sleep(long millis)

在指定的毫秒数内让当前正在执行的线程休眠

void join()

等待该线程终止

static void yield()

暂停当前正在执行的线程对象,并执行其他线程

void interrupt()

中断线程

boolean isAlive()

测试线程是否处于活动状态

六.线程同步的方式

使用synchronized修饰的方法控制对类成员变量的访问。synchronized就是为当前的线程声明一个锁。

1.使用synchronized修饰类,

访问修饰符 synchronized 返回类型 方法名(参数列表){……}        

或者

synchronized 访问修饰符 返回类型 方法名(参数列表){……}

2.使用synchronized修饰方法,

public synchronized void sale() {

        //代码块

}

3.使用synchronized修饰代码块,

synchronized(syncObject){    

        //需要同步的代码

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值