java多线程基本实现方式, 一 继承Thread类,重写Thread类的run方法 二 实现Runnabel接口 1 继承Thread类 package com.hzlssd.Thread; public class MyThread extends Thread{ public void run() { for (int i = 0; i < 100; i++) { if ((i) % 10 == 0) { System.out.println("-------" + i); } System.out.print(i); try { //休眠10秒 Thread.sleep(10); System.out.print("线程睡眠1毫秒!\n"); } catch (InterruptedException e) { e.printStackTrace(); } } } public static void main(String[] args) { new MyThread().start(); } } 2 实现Runnable接口 public class DoSomething implements Runnable{ private String name; public DoSomething(String name) { this.name = name; } @Override public void run() { for (int i = 0; i < 5; i++) { for (long k = 0; k < 100; k++); System.out.println(name + ": " + i); } } } package com.hzlssd.Thread; import static org.junit.Assert.*; import org.junit.Test; public class TestRunnable { @Test public void RunnableTest() throws InterruptedException{ DoSomething ds1 = new DoSomething("阿三"); DoSomething ds2 = new DoSomething("李四"); Thread t1 = new Thread(ds1); Thread t2 = new Thread(ds2); t1.start(); t2.start(); t2.join(); } } 3项目中的应用 public void test( ) { Thread t = new Thread(new Runnable(){ @Override public void run() { SmartSocketServer.main(new String[1]); } }); t.start(); }; 线程池操作 package com.hzlssd.Thread; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class ExecutorServiceTest { public static void main(String[] args) { //创建一个可重用固定线程数的线程池 //获取当前电脑cpu数 int cpuNum = Runtime.getRuntime().availableProcessors(); //定义单个cpu线程池的大小 int POOL_SIZE = 30; ExecutorService pool = Executors.newFixedThreadPool(cpuNum * POOL_SIZE); //创建实现了Runnable接口对象,Thread对象当然也实现了Runnable接口 Thread t1 = new MyThreadInner(); Thread t2 = new MyThreadInner(); Thread t3 = new MyThreadInner(); Thread t4 = new MyThreadInner(); Thread t5 = new MyThreadInner(); //将线程放入池中进行执行,相当于调用了start方法 pool.execute(t1); pool.execute(t2); pool.execute(t3); pool.execute(t4); pool.execute(t5); //关闭线程池 pool.shutdown(); } } class MyThreadInner extends Thread{ @Override public void run() { System.out.println(Thread.currentThread().getName()+"正在执行。。。"); } } java多线程取得当前线程的名称 Thread.currentThread().getName() 赋名称 Thread.currentThread().setName() 让出cpu的执行权 Thread.currentThread().yield() join()在A线程中调用B线程的join()方法,当执行到此方法时,A线程停止执行,直到 B线程停止执行,A线程才继续执行 判断当前线程是否存活 Boolean bol = thread1.isAlive() 显示得让线程睡眠 thread1.sleep(long l) 设置线程的优先级 1 - 10 数值越大,优先级越高 默认的优先级为5 tr1.setPriority(Thread.MAX_PRIRITY) 获得当前线程的优先级 th1.getPriority() |
|
来自: 擎天猪mpnlajkd > 《javaSE》