有以下三点体会:
- 进程是一个静态的概念;
- 线程是一个进程中不同的执行路径;
- 在同一个时间点上一个CPU只能支持一个线程在执行;
- 多核可以支持多线程。
Java通过Java.lang.Thread实现多线程,可以通过创建Thread对象的run()方法来实现,也可以通过使用start()来启动新线程。
通过run()有两种方法实现:
- 定义线程实现Runnable接口:
Thread myThread=new Thread (target) //targer为runnable接口类型
runnable中只有一个方法:
public void run();用以定义线程运行体;
使用Runnable接口可以为多线程提供共享的数据
在实现Runnable接口的类的run方法定义中可以使用Thread的静态方法‘
public static Thread currentThread() 获取当前线程的引用
2. 可以定义一个Thread的子类并重写其run方法如:
class MyThread extends Thead{
public void run(){...}
}
然后生成该类的对象:
MyThrea myThread = new MyThread(...)
3. sleep()方法 休眠
4. Jion()合并
5. yield() 暂停当前正在执行的线程对象,并执行其他线程,只让出一个时间片
6. 优先级:
public class TestPriotity {
Thread t1 = new Thread(new T1());
Thread t2 = new Thread(new T2());
t1.setPriority(Thread.NORM_PRIORITY+3);
t1.start();
t2.start();
}
class T1 implements Runnable{
public void run(){
for(int i=0;i<=100;i++)
System.out.println("T1:"+i);
}
}
class T2 implements Runnable{
public void run(){
for(int j=0;j<100;j++)
System.out.println("-----T2:"+j);
}
}
输出结果是,t1输出一段后,开始输出t2,很快有继续输出t1.
6.一个进程启用多个线程:
public class TestThread2 {
public static void main(String[] args){
Runner2 r = new Runner2();
Thread t1 = new Thread(r);
Thread t2 = new Thread(r);
t1.start();
t2.start();
}
}
class Runner2 implements Runnable{
public void run(){
for(int i=0;i<100;i++)
System.out.println("NO.:"+i);
}
}
浙公网安备 33010602011771号