JAVA线程笔记。

继承thread类 并覆写thread类中的run()方法。

class 类名称 extents Thread{
public void run(){}
}
实现Runble接口的run方法

线程的start()方法

public synchronized void start(){
if(threadStatus!=0){
throw new IllegalThreadStateException();
}
start0();
}
private native void start0();

native表示调用本机的操作系统函数,多线程需要底层OS支持

实现Runnable接口
class 类名称 implements Runnable{
public void run()
}


Thread(Runnable)

MyThread my1=new MyThread([实现Runnable的类的对象])

Thread t1=new Thread(my1)

t1.start()


继承Thread类不能资源共享。

假设有两个继承Thread类的类 A和B

因为实例化的A,B的对象是不同的实例,分别执行自已的start方法。


实现Runnable的接口的类C

是将C的实例c传入Thread,得到一个Thread对象

不同的Thread 都有c的属性,执行的是C的方法

所以c。中的数据可共享。

线程的实现和调用,是经常出现的笔记题。

直接调用run方法,则方法在当前线程上执行

调用start方法,才会新建一个独立的线程。

android消息队列有关于线程的应用。叫什么忘记了,调用的就是run方法。


Thread getName 取得线程名
setName 设置线程名 没设,自动分配名称 Thread-1

isAlive 测试线程是否已经启动
join 让一个线程强制运行,线程运行期间,其他线程无法运行。

sleep 休眠
interrupt 中断

setDaemon 精灵线程,又叫后台线程, 只要前台有一个线程在运行,整个JAVA进程都不会消失。设置一个后台线程,即使JAVA进程结束,后台线程依然运行。


优先级 ,setPriority MIN PRIORITY 最低 1
NORM 中等 5
MAX 最高 10

Thread.currentThread.yield 线程礼让
yield在C#中是不同的用途,记得是实现Ienum接口时用。

1同步代码块 synchronized(同步对象){
需要同步的代码}

2同步方法 synchronized void sale(){}

访问权限 final static synchronized 返回值类型 void 方法名(参数类型,名秒钟) throws exception
{
return 返回值
}


Object 对线程的支持。
wait
notify
notyfyAll


生产者与消费者。

upspend 暂时挂起
resume 恢复挂起
stop 停止
这三入不推荐用,容易产生死锁

停止线程运行,设置标志位实现


class MyThread inmplements Runnable{
private boolean flag=true;
public void run (){
int i=0;
while(this.falg){

}
}
}

public void stop(){
this.flag=false;
}

原文地址:https://www.cnblogs.com/zihunqingxin/p/3141417.html