创建线程的两种方法
继承 Thread 和 实现 Runnable 接口
继承Thread以后只需实例化再start();就能启动线程
实现Runnable接口以后需要 Thread t=new Thread(MyThread); t.start();来启动
start(); 与 run();方法
mythread.run()是在“主线程main”中调用的,该run()方法直接运行在“主线程main”上。
mythread.start()会启动“线程mythread”,“线程mythread”启动之后,会调用run()方法;此时的run()方法是运行在“线程mythread”上。
线程控制
1.线程睡眠:Thread.sleep(...);
2.线程让步:暂停当前线程,让系统的线程调度器重新调度。public static void yield();直接在run方法中调用 yield();
3.线程协作:使得当前线程进入等待状态,知道被jion方法加入的线程运行结束后,再恢复执行 public final void jion() throws InterruptedException
4.后台线程:setDaemon(); 可用来打开或者关闭一个线程的守护状态 t.setDaemon(true);当主线程终止时,后台线程也随之终止,非后台线程不会随主线程终止。
5.线程优先级:优先级高的线程获得较多的运行机会 设置线程优先级:public final void setPriority(int newPrioity) 获得线程优先级: public final int getPriority()
线程同步处理:
public synchronized void accessVal(int newValue);
声明为synchronized的代码块,同一时间只能有一个线程访问
线程间通信:
final void wait() throws InterruptedException
final void notify();
final void notifyAll();
这三个方法只能在synchronized代码块中使用,并且是在同一个同步问题中搭配使用这三个方法才有实际意义
调用wait()方法可以使调用该方法的线程释放资源的锁,从可运行状态进入等待状态,直到再次被唤醒。
调用notify()方法可以唤醒等待队列中第一个等待同意共享资源的线程,并使该线程退出等待序列,进入可运行状态。
调用notifyAll()********************所有 *********************************************************
notify能唤醒哪一个线程并不确定。
继承 Thread 和 实现 Runnable 接口
继承Thread以后只需实例化再start();就能启动线程
实现Runnable接口以后需要 Thread t=new Thread(MyThread); t.start();来启动
start(); 与 run();方法
mythread.run()是在“主线程main”中调用的,该run()方法直接运行在“主线程main”上。
mythread.start()会启动“线程mythread”,“线程mythread”启动之后,会调用run()方法;此时的run()方法是运行在“线程mythread”上。
线程控制
1.线程睡眠:Thread.sleep(...);
2.线程让步:暂停当前线程,让系统的线程调度器重新调度。public static void yield();直接在run方法中调用 yield();
3.线程协作:使得当前线程进入等待状态,知道被jion方法加入的线程运行结束后,再恢复执行 public final void jion() throws InterruptedException
4.后台线程:setDaemon(); 可用来打开或者关闭一个线程的守护状态 t.setDaemon(true);当主线程终止时,后台线程也随之终止,非后台线程不会随主线程终止。
5.线程优先级:优先级高的线程获得较多的运行机会 设置线程优先级:public final void setPriority(int newPrioity) 获得线程优先级: public final int getPriority()
线程同步处理:
public synchronized void accessVal(int newValue);
声明为synchronized的代码块,同一时间只能有一个线程访问
线程间通信:
final void wait() throws InterruptedException
final void notify();
final void notifyAll();
这三个方法只能在synchronized代码块中使用,并且是在同一个同步问题中搭配使用这三个方法才有实际意义
调用wait()方法可以使调用该方法的线程释放资源的锁,从可运行状态进入等待状态,直到再次被唤醒。
调用notify()方法可以唤醒等待队列中第一个等待同意共享资源的线程,并使该线程退出等待序列,进入可运行状态。
调用notifyAll()********************所有 *********************************************************
notify能唤醒哪一个线程并不确定。