1、一个程序有多个进程,一个进程有多个线程,而线程分为单线程和多线程
2、单线程指的是每个线程按顺序执行某个任务
3、多线程指的是每个线程执行不同的任务,并且可以与其它线程并发执行
4、在线程程序中,至少有一个线程,那就是主线程,而其他的线程都叫做主线程的子线程
以下就是一个主线程的创建和启动
class A extends Thread{
public void run(){
}
}
线程的代码必须放在run方法里执行
在另一个类中,将线程放入可执行的队列中,等待系统调度执行
A a = new A();
a.start();
声明一个实现 Runnable 接口的类,并实现 run() 方法。
class mythread implements Runnable{
public void run( ) {/* 实现该方法*/ }
}
如果对象是Runnable,那只说明它有run( )方法
5、线程的同步和异步
线程本身是异步的(并行)
在某些地方需要让线程同步
线程的同步指的是串行,
异步指的是并行
6、如何实现线程同步
1、锁住某个代码块
synchronized(需要同步的对象){
需要同步的代码
}
2、锁住某个方法块
public synchronized void quqian(int n){
}
3、使用锁对象
//创建锁
Lock l = new ReentrantLock();
//上锁
l.lock();
需要上锁的代码块
//解锁
l.unlock();
7、线程的控制
1、线程的暂停和停止模型
static boolean isPause = false;//是否暂停
boolean isStop = false;//是否停止
public void run(){
}
2、单线程指的是每个线程按顺序执行某个任务
3、多线程指的是每个线程执行不同的任务,并且可以与其它线程并发执行
4、在线程程序中,至少有一个线程,那就是主线程,而其他的线程都叫做主线程的子线程
以下就是一个主线程的创建和启动
class A extends Thread{
public void run(){
}
}
线程的代码必须放在run方法里执行
在另一个类中,将线程放入可执行的队列中,等待系统调度执行
A a = new A();
a.start();
声明一个实现 Runnable 接口的类,并实现 run() 方法。
class mythread implements Runnable{
public void run( ) {/* 实现该方法*/ }
}
如果对象是Runnable,那只说明它有run( )方法
5、线程的同步和异步
线程本身是异步的(并行)
在某些地方需要让线程同步
线程的同步指的是串行,
异步指的是并行
6、如何实现线程同步
1、锁住某个代码块
synchronized(需要同步的对象){
需要同步的代码
}
2、锁住某个方法块
public synchronized void quqian(int n){
}
3、使用锁对象
//创建锁
Lock l = new ReentrantLock();
//上锁
l.lock();
需要上锁的代码块
//解锁
l.unlock();
7、线程的控制
1、线程的暂停和停止模型
static boolean isPause = false;//是否暂停
boolean isStop = false;//是否停止
public void run(){
}