Java多线程
2016-04-21 14:28
453 查看
Java 线程基础
一 两种创建线程的基本方式
public
class MyThread extends
Thread {
private String
name;
public MyThread(String
name) {
this.name =
name;
}
@Override
public
void run() {
for(int
i = 0; i < 10;
i++) {
System.out.println(name +
"" + i);
}
}
}
public
class MyThread1implements Runnable {
private String
name;
public MyThread1(String
name) {
this.name =
name;
}
@Override
public
void run() {
for(int
i = 0; i < 10;
i++) {
System.out.println(name +
"" + i);
}
}
}
public
classThreadTest {
public
static voidmain(String[]
args) {
/*MyThread myThread = newMyThread("A");
MyThread myThread2 = newMyThread("B");
myThread.start();
myThread2.start();*/
MyThread1 myThread3 = newMyThread1("C");
MyThread1 myThread4 = newMyThread1("D");
Thread t1 = new Thread(myThread3);
Thread t2 = new Thread(myThread4);
t1.start();
t2.start();
}
}
二 线程的状态
三 线程中常用的方法
public
classRunnableDemo implements Runnable {
private String
name;
publicRunnableDemo(String
name) {
this.name =
name;
}
@Override
public
void run() {
for(int
i = 0; i < 500;i++) {
System.out.println(name +
"" + Thread.currentThread().getName() +
"" + i);
}
}
}
public
class DemoTest{
public
static voidmain(String[]
args) {
RunnableDemo rd = newRunnableDemo("A");
RunnableDemo rd1 = newRunnableDemo("B");
Thread thread = new Thread(rd);
//Thread thread1 = new Thread(rd1);
thread.start();
for(int
i = 0; i < 500;i++) {
if(i == 10) {
try {
thread.join();
} catch(InterruptedException
e) {
// TODOAuto-generated catch block
e.printStackTrace();
}
}
System.out.println("main" +
"" + i);
}
System.out.println(thread.isAlive());
//System.out.println(thread.isAlive());
/*thread1.start();*/
}
}
public
classRunnableDemo implements Runnable {
priva
b033
te String
name;
publicRunnableDemo(String
name) {
this.name =
name;
}
@Override
public
void run() {
for(int
i = 0; i < 10;
i++) {
try {
Thread.sleep(1000);
} catch(InterruptedException
e) {
// TODOAuto-generated catch block
e.printStackTrace();
}
System.out.println(name +
"" + Thread.currentThread().getName() +
"" + i);
}
}
}
四 同步代码块
public
classMyThreadDemo implements Runnable {
private
int ticket = 5;
//资源共享的时候需要用到同步
@Override
public
void run() {
for(int
i = 0; i < 10;
i++) {
synchronized (this) {
if(ticket > 0) {
try {
Thread.sleep(1000);
} catch(InterruptedException
e) {
e.printStackTrace();
}
System.out.println("车票:" +
ticket--);
}
}
}
}
//public synchronized voidbuyTicket(){}//同步方法
}
public
classMyThreadDemoTest {
public
static voidmain(String[]
args) {
MyThreadDemo m = newMyThreadDemo();
Thread t = new Thread(m);
Thread t1 = new Thread(m);
Thread t2 = new Thread(m);
t.start();
t1.start();
t2.start();
}
}
五 线程的生命周期
一 两种创建线程的基本方式
public
class MyThread extends
Thread {
private String
name;
public MyThread(String
name) {
this.name =
name;
}
@Override
public
void run() {
for(int
i = 0; i < 10;
i++) {
System.out.println(name +
"" + i);
}
}
}
public
class MyThread1implements Runnable {
private String
name;
public MyThread1(String
name) {
this.name =
name;
}
@Override
public
void run() {
for(int
i = 0; i < 10;
i++) {
System.out.println(name +
"" + i);
}
}
}
public
classThreadTest {
public
static voidmain(String[]
args) {
/*MyThread myThread = newMyThread("A");
MyThread myThread2 = newMyThread("B");
myThread.start();
myThread2.start();*/
MyThread1 myThread3 = newMyThread1("C");
MyThread1 myThread4 = newMyThread1("D");
Thread t1 = new Thread(myThread3);
Thread t2 = new Thread(myThread4);
t1.start();
t2.start();
}
}
二 线程的状态
三 线程中常用的方法
public
classRunnableDemo implements Runnable {
private String
name;
publicRunnableDemo(String
name) {
this.name =
name;
}
@Override
public
void run() {
for(int
i = 0; i < 500;i++) {
System.out.println(name +
"" + Thread.currentThread().getName() +
"" + i);
}
}
}
public
class DemoTest{
public
static voidmain(String[]
args) {
RunnableDemo rd = newRunnableDemo("A");
RunnableDemo rd1 = newRunnableDemo("B");
Thread thread = new Thread(rd);
//Thread thread1 = new Thread(rd1);
thread.start();
for(int
i = 0; i < 500;i++) {
if(i == 10) {
try {
thread.join();
} catch(InterruptedException
e) {
// TODOAuto-generated catch block
e.printStackTrace();
}
}
System.out.println("main" +
"" + i);
}
System.out.println(thread.isAlive());
//System.out.println(thread.isAlive());
/*thread1.start();*/
}
}
public
classRunnableDemo implements Runnable {
priva
b033
te String
name;
publicRunnableDemo(String
name) {
this.name =
name;
}
@Override
public
void run() {
for(int
i = 0; i < 10;
i++) {
try {
Thread.sleep(1000);
} catch(InterruptedException
e) {
// TODOAuto-generated catch block
e.printStackTrace();
}
System.out.println(name +
"" + Thread.currentThread().getName() +
"" + i);
}
}
}
四 同步代码块
public
classMyThreadDemo implements Runnable {
private
int ticket = 5;
//资源共享的时候需要用到同步
@Override
public
void run() {
for(int
i = 0; i < 10;
i++) {
synchronized (this) {
if(ticket > 0) {
try {
Thread.sleep(1000);
} catch(InterruptedException
e) {
e.printStackTrace();
}
System.out.println("车票:" +
ticket--);
}
}
}
}
//public synchronized voidbuyTicket(){}//同步方法
}
public
classMyThreadDemoTest {
public
static voidmain(String[]
args) {
MyThreadDemo m = newMyThreadDemo();
Thread t = new Thread(m);
Thread t1 = new Thread(m);
Thread t2 = new Thread(m);
t.start();
t1.start();
t2.start();
}
}
五 线程的生命周期
相关文章推荐
- JAVA去除小数点后不需要的0
- java AES128加密压缩 模拟传输数据
- JAVA中断机制详解
- 为什么我新建的maven项目没有java目录?
- Struts2——debug标签
- 错误,这个如何解决呢?内存溢出的问提。把JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m 还是不行
- Java中的位操作
- 自定义java泛型
- 线程的创建方式问题
- java运行时异常与一般异常有何异同?
- Eclipse的使用
- ns-3 的下载、编译以及 Eclipse 的相关配置
- JDK1.8源码学习之Map.java
- java 图片缩放和截取
- java Split 特殊符号处理
- 公共技术点之 Java 反射 Reflection
- 【项目管理和构建】十分钟教程,eclipse配置maven + 创建maven项目(三)
- java 第三方登录之新浪微博登录
- JAVA基础知识点
- SpringMVC源码剖析(三)- DispatcherServlet的初始化流