多进程:在操作系统中能(同时)运行多个任务(程序)
多线程:在同一应用程序中有多个顺序流(同时)执行
一个线程是用一个线程对象表示的
创建线程的方法
1.定义一个线程类,它继承Thread并重写其中的方法run(),方法run()称为线程体;
由于Java只支持单继承,用这种方法定义的类不能在继承其他的类。
1.主函数线程
2.ft线程
3.垃圾回收线程
2.实现线程的第二种方法,这也是相对方法一更常用的方法
Thread.sleep(nms);//让出CPU等待nms后进入就绪状态等待抢占CPU
//使用时需要用到try...catch结构
Thread.yield();//让出CPU进入就绪状态
设置线程的优先级
getPriority()//取得优先级
setPriority();//设置优先级
//线程的有先级最大是Thread.MAX_PRIORITY = 10
多线程:在同一应用程序中有多个顺序流(同时)执行
一个线程是用一个线程对象表示的
创建线程的方法
1.定义一个线程类,它继承Thread并重写其中的方法run(),方法run()称为线程体;
由于Java只支持单继承,用这种方法定义的类不能在继承其他的类。
class FirstThread extends Thread{
public void run(){
for(int i=0;i<100;i++)
System.out.println("FistThread-->"+i);
}
}
class Test{
public static void main(String args[])
{
//生成线程类的对象
FirstThread ft = new FirstThread();
ft.start();//启动线程
//ft.run();//千万不能这样写
//这样写就直接执行run方法里面的内容而没有体现出线程
}
}
以上代码运行的时候有三个线程
1.主函数线程
2.ft线程
3.垃圾回收线程
class Test{
public static void main(String args[])
{
FirstThread ft = new FirstThread();
ft.start();
for(int i=0;i<100;i++){
System.out.println("main-->"+i);
}
}
}
修改成如上代码之后就能体现出线程与线程的执行关系了,运行结果如下
main-->0
FistThread-->0
FistThread-->1
main-->1
FistThread-->2
main-->2
FistThread-->3
main-->3
main-->4
FistThread-->4
main-->5
main-->6
FistThread-->5
main-->7
FistThread-->6
FistThread-->7
FistThread-->8
...
多线程在运行的时候是没有规律的,也就是说每次运行的先后顺序可能都不一样,也不可控
2.实现线程的第二种方法,这也是相对方法一更常用的方法
class RunnableImpl implements Runnable{
public void run()//对run进行复写
{
for(int i=0;i<100;i++)
System.out.println("Runnable-->"+i);
}
}
class Test{
public static void main(String args[])
{
//生成一个Runnable接口实现类的对象
RunnableImpl ri = new RunnableImpl();
//生成一个Trread对象,并将Runnable接口实现类的对象作为参数
//传递给该Thread对象
Thread t = new Thread(ri);
//通知Thread对象执行方法
t.start();
for(int i=0;i<100;i++){
System.out.println("main-->"+i);
}
}
}
中断线程
Thread.sleep(nms);//让出CPU等待nms后进入就绪状态等待抢占CPU
//使用时需要用到try...catch结构
Thread.yield();//让出CPU进入就绪状态
设置线程的优先级
getPriority()//取得优先级
setPriority();//设置优先级
//线程的有先级最大是Thread.MAX_PRIORITY = 10
//最小是Thread.MIN_PRIORITY = 1;优先级越大被执行到的概率也就越大
By Urien 2018年4月14日 14:07:34