如何使用JAVA线程/多线程实例

2025-10-10 15:46:07

1、JAVA线程创建有两种方法

第一种:实现Runnable接口:

例如:

class MyThread implements Runnable{ // 实现Runnable接口

 public void run(){ // 覆写run()方法 

 for(int i=0;i<3;i++){

System.out.println(Thread.currentThread().getName()+"运行,i = " +i) ;

 // 取得当前线程的名字 

 } 

}

};

public class CurrentThreadDemo{

 public static void main(String args[]){ 

 MyThread mt = new MyThread() ; // 实例化Runnable子类对象 

 new Thread(mt,"线程").start() ;  // 启动线程  

mt.run() ; // 直接调用run()方法

 }

};

如何使用JAVA线程/多线程实例

2、第二种:继承Thread 类

class MyThread extends Thread{ 

private int time ; 

public MyThread(String name,int time){  

super(name) ; // 设置线程名称  this.time = time ; // 设置休眠时间

 } 

public void run(){ 

 try{   

Thread.sleep(this.time) ; // 休眠指定的时间 

 }catch(InterruptedException e){  

 e.printStackTrace() ;  } 

 System.out.println(Thread.currentThread().getName() + "线程,休眠"   + this.time + "毫秒。") ; 

}};

public class ExecDemo01{ 

public static void main(String args[]){

 MyThread mt1 = new MyThread("线程A",10000) ; // 定义线程对象,指定休眠时间  

MyThread mt2 = new MyThread("线程B",20000) ; // 定义线程对象,指定休眠时间  

MyThread mt3 = new MyThread("线程C",30000) ; // 定义线程对象,指定休眠时间 

 mt1.start() ; // 启动线程  

mt2.start() ; // 启动线程 

 mt3.start() ; // 启动线程 }};

如何使用JAVA线程/多线程实例

3、多线程的使用

第一种:实现Runnable接口

class MyThread implements Runnable{

 // 实现Runnable接口,作为线程的实现类 

private String name ;  // 表示线程的名称 

public MyThread(String name){  this.name = name ;

  // 通过构造方法配置name属性

 } public void run(){ 

// 覆写run()方法,作为线程 的操作主体 

 for(int i=0;i<10;i++){   System.out.println(name + "运行,i = " + i) ; 

 } 

}};

public class RunnableDemo01{ 

public static void main(String args[]){ 

 MyThread mt1 = new MyThread("线程A ") ;  // 实例化对象 

 MyThread mt2 = new MyThread("线程B ") ;  // 实例化对象  

Thread t1 = new Thread(mt1) ;  // 实例化Thread类对象  

Thread t2 = new Thread(mt2) ;  // 实例化Thread类对象  

t1.start() ; // 启动多线程 

 t2.start() ; // 启动多线程 }};

如何使用JAVA线程/多线程实例

4、第二种: 继承Thread类

class MyThread extends Thread{ // 继承Thread类,作为线程的实现类 

private String name ;  // 表示线程的名称

 public MyThread(String name){ 

 this.name = name ;  

// 通过构造方法配置name属性

 } 

public void run(){ // 覆写run()方法,作为线程 的操作主体  

for(int i=0;i<10;i++){  

 System.out.println(name + "运行,i = " + i) ; 

}

};

public class ThreadDemo01{

public static void main(String args[]){  

MyThread mt1 = new MyThread("线程A ") ;  // 实例化对象  

MyThread mt2 = new MyThread("线程B ") ;  // 实例化对象  

mt1.run() ; // 调用线程主体  

mt2.run() ; // 调用线程主体 

}};

如何使用JAVA线程/多线程实例

5、线程同步如何使用

class MyThread implements Runnable{ private int ticket = 5 ; // 假设一共有5张票

 public void run(){  for(int i=0;i<100;i++){ 

  if(ticket>0){ // 还有票   

 try{   

  Thread.sleep(300) ; // 加入延迟  

  }catch(InterruptedException e){     e.printStackTrace() ;    }   

 System.out.println("卖票:ticket = " + ticket-- );  

 }  } }};

public class SyncDemo01{

 public static void main(String args[]){

  MyThread mt = new MyThread() ; // 定义线程对象 

 Thread t1 = new Thread(mt) ; // 定义Thread对象 

 Thread t2 = new Thread(mt) ; // 定义Thread对象  

Thread t3 = new Thread(mt) ; // 定义Thread对象  

t1.start() ;  t2.start() ;  t3.start() ; }};

如何使用JAVA线程/多线程实例

6、线程锁的使用

class Zhangsan{ // 定义张三类

 public void say(){ 

 System.out.println("张三对李四说:“你给我画,我就把书给你。”") ; } 

public void get(){ 

 System.out.println("张三得到画了。") ; }};class Lisi{ // 定义李四类

 public void say(){  System.out.println("李四对张三说:“你给我书,我就把画给你”") ; } 

public void get(){  

System.out.println("李四得到书了。") ; }};

public class ThreadDeadLock implements Runnable{

 private static Zhangsan zs = new Zhangsan() ; // 实例化static型对象

 private static Lisi ls = new Lisi() ;  // 实例化static型对象 

private boolean flag = false ; // 声明标志位,判断那个先说话

 public void run(){ // 覆写run()方法 

 if(flag){   

synchronized(zs){ // 同步张三 

  zs.say() ;    

try{     

Thread.sleep(500) ;   

 }catch(InterruptedException e){  

   e.printStackTrace() ;  

  }   

 synchronized(ls){    

 zs.get() ;   

 }   }  }else{   

synchronized(ls){ 

   ls.say() ;    

try{   

  Thread.sleep(500) ;  

  }catch(InterruptedException e){  

   e.printStackTrace() ;    }   

 synchronized(zs){     ls.get() ;    

}   }  } } 

public static void main(String args[]){  

ThreadDeadLock t1 = new ThreadDeadLock() ;  // 控制张三  

ThreadDeadLock t2 = new ThreadDeadLock() ;  // 控制李四 

 t1.flag = true ;  t2.flag = false ; 

 Thread thA = new Thread(t1) ;  

Thread thB = new Thread(t2) ; 

 thA.start() ;

  thB.start() ; 

}};

如何使用JAVA线程/多线程实例

7、但是我们在开发中一般会使用多线程或线程池,多线程上面已经介绍了,线程池我们一般会用JAVA自带的线程池

//创建一个可重用固定线程数的线程池

        ExecutorService pool = Executors. newSingleThreadExecutor();

        Thread t1 = new MyThread();

        Thread t2 = new MyThread();

        Thread t3 = new MyThread();

        Thread t4 = new MyThread();

        Thread t5 = new MyThread();

        pool.execute(t1);

        pool.execute(t2);

        pool.execute(t3);

        pool.execute(t4);

        pool.execute(t5);

        //关闭线程池

        pool.shutdown();

如何使用JAVA线程/多线程实例

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
相关推荐
  • 阅读量:79
  • 阅读量:169
  • 阅读量:25
  • 阅读量:86
  • 阅读量:117
  • 猜你喜欢