package com.javaedge;
import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicInteger;
class MyThread extends Thread {
private int tid;
public MyThread(int tid) {
this.tid = tid;
}
@Override
public void run() {
try {
for (int i = 0; i < 10; ++i) {
Thread.sleep(1000);
System.out.println(String.format("%d:%d", tid, i));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Consumer implements Runnable {
private BlockingQueue<String> q;
public Consumer(BlockingQueue<String> q) {
this.q = q;
}
@Override
public void run() {
try {
while (true) {
System.out.println(Thread.currentThread().getName() + ":" + q.take());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Producer implements Runnable {
private BlockingQueue<String> q;
public Producer(BlockingQueue<String> q) {
this.q = q;
}
@Override
public void run() {
try {
for (int i = 0; i < 100; ++i) {
Thread.sleep(1000);
q.put(String .valueOf(i));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
public class MultiThreadTests {
public static void testThread() {
for (int i = 0; i < 10; ++i) {
//new MyThread(i).start();
}
for (int i = 0; i < 10; ++i) {
final int finalI = i;
new Thread(new Runnable() {
@Override
public void run() {
try {
for (int j = 0; j < 10; ++j) {
Thread.sleep(1000);
System.out.println(String.format("T2 %d: %d:", finalI, j));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
}
private static Object obj = new Object();
public static void testSynchronized1() {
synchronized (obj) {
try {
for (int j = 0; j < 10; ++j) {
Thread.sleep(1000);
System.out.println(String.format("T3 %d", j));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void testSynchronized2() {
synchronized (new Object()) {
try {
for (int j = 0; j < 10; ++j) {
Thread.sleep(1000);
System.out.println(String.format("T4 %d", j));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void testSynchronized() {
for (int i = 0; i < 10; ++i) {
new Thread(new Runnable() {
@Override
public void run() {
testSynchronized1();
testSynchronized2();
}
}).start();
}
}
public static void testBlockingQueue() {
BlockingQueue<String> q = new ArrayBlockingQueue<String>(10);
new Thread(new Producer(q)).start();
new Thread(new Consumer(q), "Consumer1").start();
new Thread(new Consumer(q), "Consumer2").start();
}
private static ThreadLocal<Integer> threadLocalUserIds = new ThreadLocal<>();
private static int userId;
public static void testThreadLocal() {
for (int i = 0; i < 10; ++i) {
final int finalI = i;
new Thread(new Runnable() {
@Override
public void run() {
try {
threadLocalUserIds.set(finalI);
Thread.sleep(1000);
System.out.println("ThreadLocal:" + threadLocalUserIds.get());
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
for (int i = 0; i < 10; ++i) {
final int finalI = i;
new Thread(new Runnable() {
@Override
public void run() {
try {
userId = finalI;
Thread.sleep(1000);
System.out.println("UserId:" + userId);
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
}
public static void testExecutor() {
//ExecutorService service = Executors.newSingleThreadExecutor();
ExecutorService service = Executors.newFixedThreadPool(2);
service.submit(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 10; ++i) {
try {
Thread.sleep(1000);
System.out.println("Executor1:" + i);
} catch (Exception e) {
e.printStackTrace();
}
}
}
});
service.submit(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 10; ++i) {
try {
Thread.sleep(1000);
System.out.println("Executor2:" + i);
} catch (Exception e) {
e.printStackTrace();
}
}
}
});
service.shutdown();
while (!service.isTerminated()) {
try {
Thread.sleep(1000);
System.out.println("Wait for termination.");
} catch (Exception e) {
e.printStackTrace();
}
}
}
private static int counter = 0;
private static AtomicInteger atomicInteger = new AtomicInteger(0);
public static void testWithoutAtomic() {
for (int i = 0; i < 10; ++i) {
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
for (int j = 0; j < 10; ++j) {
counter++;
System.out.println(counter);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
}
public static void testWithAtomic() {
for (int i = 0; i < 10; ++i) {
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
for (int j = 0; j < 10; ++j) {
System.out.println(atomicInteger.incrementAndGet());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
}
public static void testAtomic() {
//testWithoutAtomic();
testWithAtomic();
}
public static void testFuture() {
ExecutorService service = Executors.newSingleThreadExecutor();
Future<Integer> future = service.submit(new Callable<Integer>() {
@Override
public Integer call() throws Exception {
//Thread.sleep(1000);
throw new IllegalArgumentException("异常");
//return 1;
}
});
service.shutdown();
try {
System.out.println(future.get());
//System.out.println(future.get(100
没有合适的资源?快使用搜索试试~ 我知道了~
基于 SSM 框架搭建仿知乎问答平台.zip
共471个文件
jpg:142个
xml:113个
java:59个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 63 浏览量
2023-07-08
16:04:30
上传
评论
收藏 35.1MB ZIP 举报
温馨提示
基于ssm写的系统(含数据库文件) 语言:java 框架:ssm 数据库:mysql
资源推荐
资源详情
资源评论
收起资源包目录
基于 SSM 框架搭建仿知乎问答平台.zip (471个子文件)
mvnw.cmd 5KB
letter.css 430KB
letter.css 430KB
index.css 311KB
index.css 311KB
result.css 302KB
result.css 302KB
detail.css 299KB
detail.css 299KB
bootstrap.min.css 111KB
bootstrap.min.css 111KB
login.css 63KB
login.css 63KB
captcha.gif 13KB
captcha.gif 13KB
spinner2.8f60205d.gif 1KB
spinner2.8f60205d.gif 1KB
.gitignore 344B
.gitignore 54B
header.html 10KB
header.html 10KB
feeds.html 9KB
feeds.html 9KB
profile.html 8KB
profile.html 8KB
detail.html 8KB
detail.html 8KB
index.html 6KB
index.html 6KB
followees.html 3KB
followees.html 3KB
followers.html 3KB
followers.html 3KB
login.html 3KB
login.html 3KB
result.html 2KB
result.html 2KB
letter.html 2KB
letter.html 2KB
letterDetail.html 1KB
letterDetail.html 1KB
home.html 1KB
home.html 1KB
js.html 852B
js.html 852B
login_exception.html 41B
login_exception.html 41B
footer.html 15B
footer.html 15B
wenda.iml 11KB
maven-wrapper.jar 48KB
MultiThreadTests.java 8KB
FollowController.java 7KB
JedisAdapter.java 7KB
SensitiveService.java 5KB
QuestionController.java 4KB
FollowService.java 4KB
LoginController.java 4KB
MessageController.java 4KB
UserService.java 3KB
FeedHandler.java 3KB
HomeController.java 3KB
EventConsumer.java 3KB
MailSender.java 3KB
SearchService.java 3KB
InitDatabaseTests.java 3KB
SearchController.java 2KB
CommentController.java 2KB
LikeController.java 2KB
PassportInterceptor.java 2KB
FeedController.java 2KB
YouZhiUtil.java 2KB
EventModel.java 2KB
LikeService.java 2KB
FollowHandler.java 2KB
MessageDAO.java 2KB
RedisKeyUtil.java 2KB
LikeServiceTests.java 1KB
Message.java 1KB
CommentDAO.java 1KB
LikeHandler.java 1KB
CommentService.java 1KB
QuestionDAO.java 1KB
QuestionService.java 1KB
LoginRequiredInterceptor.java 1KB
Feed.java 1KB
MessageService.java 1KB
AddQuestionHandler.java 1KB
LogAspect.java 1KB
LoginExceptionHandler.java 1KB
WendaWebConfiguration.java 944B
UserDAO.java 938B
LoginTicketDAO.java 828B
FeedDAO.java 817B
SettingController.java 763B
EventProducer.java 726B
FeedService.java 694B
WendaApplication.java 652B
WendaApplicationTests.java 494B
HostHolder.java 422B
共 471 条
- 1
- 2
- 3
- 4
- 5
资源评论
- qq_396424292023-09-18资源内容详细全面,与描述一致,对我很有用,有一定的使用价值。
我慢慢地也过来了
- 粉丝: 7141
- 资源: 4013
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功