// 获取当前电脑cpu个数
Runtime runtime = Runtime.getRuntime();
System.out.println(runtime.availableProcessors());
class Cat extends Thread{
@Override
public void run() {
int i = 0;
while (true) {
i++;
try {
System.out.println(Thread.currentThread().getName());
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(i==60) {
break;
}
}
}
}
## 为什么要执行子进程调用的是start方法而不是run方法?
* 如果直接执行run 方法则无法创建新的线程,只是单单执行了run方法
* 源码中start0 是本地方法,由JVM调用 是C/c++实现 这才是能创建线程的关键
* 线程机制是与操作系统相关。
## 用runnable方式创建线程
* runnable底层使用了静态代理设计模式
``` java
public class ThreadRunnable {
public static void main(String[] args) {
ThreadRun threadRun = new ThreadRun();
Thread thread = new Thread(threadRun);
thread.start();
System.out.println(Thread.currentThread().getName());
}
}
class ThreadRun implements Runnable {
int i = 0;
@Override
public void run() {
while (true) {
i++;
System.out.println(i + Thread.currentThread().getName());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(i == 10) {
break;
}
}
}
}