java基础——线程

一、线程
1、线程与进程
(1)进程每个程序都至少有一个进程,每个进程中都至少有一个线程。


(2)线程是进程的一个实体。


(3)进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。线程自己基本上不拥有系统资源。
2、启动线程
(1)每个java程序在运行的时候至少会启动一根线程
(2)我们可以通过继承Thread类或者实现Runnable接口来启动一个线程
public class ThreadTest {


	public static void main(String[] args) {
		// main方法会自动启动一根线程
		System.out.println(Thread.currentThread().getName()+"启动了!");
		// 通过Thread来启动一根线程
		new myThread().start();
		// 通过实现Runnable接口来启动一根线程
		new Thread(new myRunnable()).start();
		}
}
class myThread extends Thread {
	@Override
	public void run() {
		//重写run方法,这里是线程的运行位置
		System.out.println(getName()+"启动了!");
	}
}


class myRunnable implements Runnable {
	@Override
	public void run() {
		//重写run方法,这里是线程的运行位置
		System.out.println(Thread.currentThread().getName()+"启动了!");
	}
}


注意:启动线程只能通过start()方法,不能使用run()方法启动。
3、join、sleep、yield方法
(1)join(),如果在线程1里面线程2调用了join方法,那么线程1就必须得到线程2运行完毕,才会继续运行。
(2)sleep(),如果使用sleep(1000),那么该线程会阻塞1s,才会继续执行。
(3)yield(),如果此线程使用了yield(),那么当他抢到执行机会的时候,它会不执行,然后重新抢。
4、同步锁(synchronized)
(1)在多根线程访问同一个方法或者代码块的时候,我们一般会使用synchronized锁住这个方法或者代码块,每次只能由一根线程访问。
//锁住代码块
	public void getMoney(String name, int money) {
		synchronized (this) {
			//需要被锁住的代码块
		}
	}
	//锁住方法
	public synchronized void getMoney(String name, int money){}


5、wait()、notify()
(1)wait()让此线程阻塞在这里,直到有一个notify()将他唤醒。
(2)notify()唤醒wait()的线程
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值