1、Thread实现多线程
使用多线程必须做到:
1)线程必须从Thread类继承,使自己成为Thread 类的子类;
2)线程的处理必须编写在run()方法内;
3)启动线程调用线程类的start()方法;
class TestThread(类名称) extends Thread {
...
public void run() {
//复写run方法;
}
}
new TestThread().start();
2、实现Runable接口来实现多线程(推荐使用这方法来实现多线程)
由于java类是单一继承,在java中,如果一个类继承了另一个类,同时又想采用多线程时,就不能从Thread继承了,这时就要用到Runnable接口来创建多线程;
class 类名称 implements Runnable {
...
public void run() {
//复写run方法;
}
}
TestThread t = new TestThread();
new Thread(t).start();必须调用 Thread的start方法来启动线程;
3、线程的终止
class Runner4 implements Runnable{
private boolean bFlag = true;
public void run()
{
while(bFlag){}
}
public void shutdown(){bFlag = false;}
}
t.shutdown();
后台线程与setDaemon方法
对于java程序来说,只要有一个前台线程在运行,这个进程就不会结束,如果一个进程中只有后台线程在运行,则该进程就会结束;
如果某个线程在启动前,调用了setDaemon(true)方法,则该线程为后台线程;
设置线程后台运行 t.setDaemon(true);t.start();
4、线程的状态

5、线程的基本方法
isAlive()、getPriority()、setPriority()、Thread.sleep()、join()、yield()、wait()、notify()/notifyAll();
sleep();Thread的静态方法;
interrupt();join();合并线程;yield();让出cpu一次
6、线程同步
synchronized(对象) 来限制需要同步的执行过程;当有一个线程访问该代码块的时候,别的线程不许访问;
同步代码块;
synchronized(this)
{
if (ticket >0) {
try{Thread.sleep(100);}
catch (Exception e){}
System.out.println(Thread.currentThread().getName() +"售票" + ticket --);
}
除了可以对代码块实现同步,也可以对函数实现同步;只要在需要定义的函数前加上synchronized关键字;try{Thread.sleep(100);}
catch (Exception e){}
System.out.println(Thread.currentThread().getName() +"售票" + ticket --);
10万+

被折叠的 条评论
为什么被折叠?



