java当中的线程.表示木有找到39集。
本集主要内容.
1.进程和线程.
2.多线程程序运行模式.
3.定义线程的方法.
线程的执行过程.
创建线程的方法.
方式1.
java当中的线程.
线程是进程当中的分支
本集主要内容.
1.进程和线程.
2.多线程程序运行模式.
3.定义线程的方法.
多线程在同一应用程序中有多个顺序流(同时)进行
多进程在操作系统中能(同时)运行多个任务(程序)
线程的执行过程.
创建线程的方法.
方式1.
定义一个线程类,它进继承类Thread(thread类是由jdk提供的)并重写里面的方法Run().
方法run()称为线程体
由于java只支持单继承,用这种方法定义的类不能在继承其他类!
class FirstThread extends Thread{
public void run(){
for(int i = 0; i < 100;i++){
System.out.println("Thread print-->"+i);
}
}
}
class Test{
public static void main(String args[]){
//生成线程类的对象
FirstThread ft = new FirstThread();
//启动线程
ft.start();//线程进入就绪状态
//ft.run();千万不能这样写
for(int i = 0; i < 100;i++){
System.out.println("main--->"+i);
}
}
}
java当中的线程.
线程是进程当中的分支
主要内容:
1.实现线程的第二种方法.
2.控制线程的常用函数.
实例说明
实现线程的第二种方法.
提供一个实现接口Runnable的类作为线程的目标对象,在初始化一个thread类或者thread子类的线程对象时
把目标线程传递给这个线程实例,由该目标对象提供线程体
线程的简单控制方法.
中断线程
Thread.sleep(time) //让出CPU,在time(单位毫秒)不去执行
Thread.yield(); //让出CPU,大家一起去竞争,可能可以竞争到.
设置线程的优先线
getPriority(); //获取线程的优先级1-10
setPriority(); //设置线程的优先级1-10
class RunnableImpl implements Runnable{
public void run(){
for(int i = 0; i < 100;i++){
System.out.println("Runnable---->"+i);
if(i==50){
try{
Thread.sleep(2000);
}
catch(Exception e){
System.out.println(e);}
}
}}}
class Test{
public static void main(String args[]){
//生成一个Runnable接口实现类的对象
RunnableImpl ri = new RunnableImpl();
//生成一个Thread对象,并将 Runnable接口实现类的对象作为参数
//传递给该Thread对象
Thread t = new Thread(ri);
//线程的优先级最大是10,最小是1,可以使用Thread所提供的静态
//常量来设置线程的优先级.
// Thread.MAX_PRIORITY
// Thread.MIN_PRIORITY
// 线程优先级最高执行概率越大
//t.setPriority(Thread.MAX_PRIORITY);
t.setPriority(Thread.MIN_PRIORITY);
//通知Thread对象,执行start方法
t.start();
System.out.println(t.getPriority());
}
}
本集主要内容.
1.多线程数据安全
2.同步线程的方法
class MyThread implements Runnable{
int i = 1000;
public void run(){
while(true){
synchronized(this){//相当一部同步锁,防止线程出错
//Thread.currentThread();
System.out.println(Thread.currentThread().getName()+i);
i--;
Thread.yield();
if(i < 0){
break;
}
}
}
}
}
class Test{
public static void main(String args[]){
MyThread myThread = new MyThread();
//生成两个Thread对象,但是这两个Thread对象共同一个线程体
Thread t1 = new Thread(myThread);
Thread t2 = new Thread(myThread);
//每一个线程都有名字,可以通过Thread对象的setName()方法设置线程名字,
//也可以使用getName方法线程的名字.
t1.setName("线程A");
t2.setName("线程B");
//分别启动两个线程
t1.start();
t2.start();
}
}